Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Программирование > .NET

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжёлое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Опции просмотра Language
Старый 15.02.2011, 14:10   #61
gluik
Пользователь
 
Аватар для gluik
 
Пол:Мужской
Регистрация: 29.08.2007
Сообщений: 37
Репутация: 9
По умолчанию Re: Вопросы по C#

При программировании столкнулся с тем что при using System.Drawing; VS 2010 пишет что нет такого пространства имен. Пробовал обновить/переустановить фреймворк 4, не помогло. Может кто подскажет как это исправить .

Все, исправил (надо было добавить ссылки к проекту)

Последний раз редактировалось gluik; 15.02.2011 в 14:18..
gluik вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама: билеты в московские театры купить онлайнssd samsung 500gbкупить садовые качели в москве в обиБитрикс24 и CloudPaymentsTecno MegaBook T1


Старый 11.05.2011, 12:51   #62
newalex77
Новичок
 
Пол:Мужской
Регистрация: 21.04.2007
Сообщений: 13
Репутация: 4
По умолчанию Re: Вопросы по C#

Цитата:
Сообщение от DeathMan_asm Посмотреть сообщение
Всем привет!Хочу сделать базу данных на C#! в одной книге прочитал про компоненты oleDbConnection, oleDbDataAdapter, но на панели ToolBox в VS 2008 их нет! Может как-то их нужно явно подключать!

Тыкаешь правую кнопку мыши на Toolbox и выбираешь "Choose Items..."
newalex77 вне форума
 
Ответить с цитированием Вверх
Старый 11.08.2011, 11:29   #63
MoppDepp
Неактивный пользователь
 
Пол:Мужской
Регистрация: 11.08.2011
Сообщений: 4
Репутация: 0
По умолчанию Re: Вопросы по C#

Есть ли хорошие, годные книги по SharePoint 2010 именно с точки зрения developer'a?
MoppDepp вне форума
 
Ответить с цитированием Вверх
Старый 24.03.2012, 23:06   #64
Mad13
Неактивный пользователь
 
Пол:Мужской
Регистрация: 02.06.2010
Сообщений: 10
Репутация: 0
По умолчанию Re: Вопросы по C#

Всем привет!
мне нужно определять имя учетной записи пользователя, использую
System.Environment.UserName
или System.Security.Principal.WindowsIdentity.GetCurre nt(). на первый взгляд
все ОК. Но, бывает что у пользователя нет администраторских прав на
компьютере и нет возможности записывать информацию в некоторые каталоги,
поэтому приложение запускаю, например, "от имени администратора" и после
этого определяется имя пользователя от имени кого было запущено приложение,
а не имя пользователя, который выполнил вход в систему windows, так вот, как
определить именно пользователя, который зарегистрировался в системе?)
Mad13 вне форума
 
Ответить с цитированием Вверх
Старый 26.03.2012, 09:48   #65
Alan2006
Постоялец
 
Пол:Мужской
Регистрация: 02.07.2009
Сообщений: 393
Репутация: 79
По умолчанию Re: Вопросы по C#

Цитата:
Сообщение от Mad13 Посмотреть сообщение
Всем привет!
мне нужно определять имя учетной записи пользователя, использую
System.Environment.UserName
или System.Security.Principal.WindowsIdentity.GetCurre nt(). на первый взгляд
все ОК. Но, бывает что у пользователя нет администраторских прав на
компьютере и нет возможности записывать информацию в некоторые каталоги,
поэтому приложение запускаю, например, "от имени администратора" и после
этого определяется имя пользователя от имени кого было запущено приложение,
а не имя пользователя, который выполнил вход в систему windows, так вот, как
определить именно пользователя, который зарегистрировался в системе?)

При запуске от имени адмнистратора, создаётся отдельный сеанс, который завершается при завершение приложения. Определить как зщапущен сеанс наверняка можно, только я не знаю как.
Но вообще, это дурной тон писать приложения, требующие администраторских прав. Как минимум, возникнут проблемы у конечного пользователя при их запуске.
__________________
Каждый человек, которому вы ответили на форуме "гугл в помощь" - потенциальный "возвращенец" в винды. (ц)
Alan2006 вне форума
 
Ответить с цитированием Вверх
Старый 26.03.2012, 13:40   #66
Svintuss
Неактивный пользователь
 
Аватар для Svintuss
 
Пол:Мужской
Регистрация: 09.01.2007
Сообщений: 71
Репутация: 26
По умолчанию Re: Вопросы по C#

лучше добавь в проект манифест где выставь обязательность запуска от имени администратора http://msdn.microsoft.com/en-us/library/bb756929.aspx
Svintuss вне форума
 
Ответить с цитированием Вверх
Старый 23.07.2012, 23:09   #67
Zewirus
Новичок
 
Пол:Мужской
Регистрация: 29.12.2007
Сообщений: 22
Репутация: 2
По умолчанию Re: Вопросы по C#

Всем доброго времени суток...
У меня следующая трабла. Работаю над чем то типа месенджера, работающего напрямую через MySQL. Проблема в том что со временем прога начинает подвисать. Дело в том что коннекты к бд у меня очень частые, я думал что проблема в том что не чищу ресурсы, но это не так... Не могу придумать решения..
Zewirus вне форума
 
Ответить с цитированием Вверх
Старый 24.07.2012, 12:14   #68
Svintuss
Неактивный пользователь
 
Аватар для Svintuss
 
Пол:Мужской
Регистрация: 09.01.2007
Сообщений: 71
Репутация: 26
По умолчанию Re: Вопросы по C#

Так не видя кода, трудно что-то сказать. коннекшкны открывать надо используя using(Connection conn = new Connection()){......} чтоб автоматически ресурсы освобождались, но если подвисает, то подозреваю, что проблема в утечке памяти либо из-за мультисридинга, либо из-за кэша.
З.Ы.
Ты случайно не ICQSharp пользуешь?
в нем проблемы с таймером потоков, из-за этого проц грузится сильно.

Последний раз редактировалось Svintuss; 24.07.2012 в 12:18..
Svintuss вне форума
 
Ответить с цитированием Вверх
Старый 24.07.2012, 22:59   #69
Zewirus
Новичок
 
Пол:Мужской
Регистрация: 29.12.2007
Сообщений: 22
Репутация: 2
По умолчанию Re: Вопросы по C#

Для конекта юзаю библиотеку MySQL Connector .NET, но при вызове собитя таймера то я просто открываю конекшн высылаю запрос и закрываю, память да, нарастает... но не знаю почему...
Код:
private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Stop();
            try
            {
                
                MySqlConnection myConnection = new MySqlConnection(myConnectionString);
                MySqlCommand myCommand = new MySqlCommand(CommandText, myConnection);
                myConnection.Open();
                string str = myCommand.ExecuteScalar().ToString();
                myConnection.Close();            
                myCommand.Dispose();
                myConnection.Dispose();
            }
            catch (Exception ex)
            {
                //MessageBox.Show("Ошибка: " + ex.Message);
            }
          timer1.Enabled = true;
        }
    }
Zewirus вне форума
 
Ответить с цитированием Вверх
Старый 25.07.2012, 00:29   #70
Svintuss
Неактивный пользователь
 
Аватар для Svintuss
 
Пол:Мужской
Регистрация: 09.01.2007
Сообщений: 71
Репутация: 26
По умолчанию Re: Вопросы по C#

ага, MySQL Connector .NET. Знаем, плавали.

подозреваю, что тормоза из-за того что ты стопаришь таймер. Лучше используй lock для захвата ресурсов на время работы функции. Тогда другой поток будет ждать пока ресурс не освободится. Кстати, какой у тебя выставлен интервал? тормоза могут быть и из-за слишком короткого интервала.

дальше

myConnection.Close();
myCommand.Dispose();
myConnection.Dispose(); не рекомендую

использование блока using() делает это все автоматически. Кроме того Dispose только помечает объект на удаление. если хочешь действительно удалять объект то надо вызывать GC.Collect() сразу после диспозов. Но твоя проблема врятли в этом.

может быть еще конечно, что запрос длится слишком долко и поток висит пока он не отработает добавляя все новые и новые запросы в очередь на выполнение.

таким образом я бы делал что-то типа
Код:
public class Worker
{

   private static System.Threading.Timer timer; //  обеспечивает каждые тик в отдельном потоке
   private static bool isBussy = false;

   /// <summary>
   /// Starts timer
   /// </summary>
   /// <param name="period">tomer work period(miliseconds)</param>
   public void Run(int period)
   {
      if (timer == null)
         timer = new Timer(new TimerCallback(timer_OnCallBack));

      timer.Change(0, period);
   }

   private static void timer_OnCallBack(object state)
	{
			if(isBussy)
			   return;

         isBussy = true;

         try
         {
            using (MySqlConnection myConnection = new MySqlConnection(myConnectionString))
            {
               using (MySqlCommand myCommand = new MySqlCommand(CommandText, myConnection))
               {
                  myConnection.Open();
                  string str = myCommand.ExecuteScalar().ToString();
               }
            }
         }
         catch (Exception ex)
         {
            //MessageBox.Show("Ошибка: " + ex.Message);
         }
         finally
         {
            isBussy = false;
         }
		}
}
Svintuss вне форума
 
Ответить с цитированием Вверх
Старый 25.07.2012, 07:03   #71
Zewirus
Новичок
 
Пол:Мужской
Регистрация: 29.12.2007
Сообщений: 22
Репутация: 2
По умолчанию Re: Вопросы по C#

эээ, не люблю многопоточность, так и не въехал как передавать данные в главный поток...
Если можешь, подскажи как вывести ту переменную str, скажем, в textBox1..
насчет делегатов в курсе, но заработать так и не смог заставить

и да, интервал 1 сек, а зппросы должны выполнять быстро ибо бд пока что на локале...

Последний раз редактировалось Zewirus; 25.07.2012 в 07:05..
Zewirus вне форума
 
Ответить с цитированием Вверх
Старый 25.07.2012, 12:28   #72
Svintuss
Неактивный пользователь
 
Аватар для Svintuss
 
Пол:Мужской
Регистрация: 09.01.2007
Сообщений: 71
Репутация: 26
По умолчанию Re: Вопросы по C#

Цитата:
Сообщение от Zewirus Посмотреть сообщение
эээ, не люблю многопоточность...

В приведенном примере мультипоточность очень простая. тебе не нужно ни создавать потоки вручную, ни отслеживать их завершение. Таймер все делает сам.

1 секунда очень мало для твоего таймера. все программа висит пока не отработает запрос, а как только он отрабатывает программа опять виснет т.к. начинается новый запрос. Мультипоточный таймер решил бы эту проблему.

Передача данных очень простая, т.к. Invoke имеет перегрузку принимающую параметры для делегата.

Передачу данных можно сделать следующим образом
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
	
	public partial class Form1 : Form
	{
		private static System.Threading.Timer timer; //  обеспечивает каждые тик в отдельном потоке
		private static bool isBussy = false;

		public TextBoxEx tb = new TextBoxEx();
		
		public Form1()
		{
			InitializeComponent();

			tb.Width = 200;
			this.Controls.Add(tb);

			RunTimer(1000);

		}

		/// <summary>
		/// Starts timer
		/// </summary>
		/// <param name="period">timer work period(miliseconds)</param>
		public void RunTimer(int period)
		{
			if (timer == null)
				timer = new System.Threading.Timer(new System.Threading.TimerCallback(timer_OnCallBack));

			timer.Change(0, period);
		}

		private void timer_OnCallBack(object state)
		{
			if (isBussy)
				return;

			isBussy = true;

			try
			{
				//using (MySqlConnection myConnection = new MySqlConnection(myConnectionString))
				{
				   //using (MySqlCommand myCommand = new MySqlCommand(CommandText, myConnection))
				   {
				      //myConnection.Open();
						tb.Invoke(tb.ApplyMessage, DateTime.Now.ToString());
						//tb.Invoke(tb.ApplyMessage, myCommand.ExecuteScalar().ToString());
				   }
				}
			}
			catch (Exception ex)
			{
				//MessageBox.Show("Ошибка: " + ex.Message);
			}
			finally
			{
				isBussy = false;
			}
		}
	}

	public class TextBoxEx : TextBox
	{
		public delegate void ApplyMessageDelegate(string message);
		public ApplyMessageDelegate ApplyMessage;

		public TextBoxEx(): base()
		{
			ApplyMessage = new ApplyMessageDelegate(OnApplyMessage);
		}

		private void OnApplyMessage(string message)
		{
			this.Text = message;
		}
	}
}
Результат будет выглядеть как-то так http://grabilla.com/02719-cc65c210-f...4754ba69d.html
Svintuss вне форума
 
Ответить с цитированием Вверх
Старый 25.07.2012, 18:11   #73
Svintuss
Неактивный пользователь
 
Аватар для Svintuss
 
Пол:Мужской
Регистрация: 09.01.2007
Сообщений: 71
Репутация: 26
По умолчанию Re: Вопросы по C#

Eще вариант - сделать статический класс который будет содержать message.
в мультипоточном таймере запрос будет проставлять значение message, а в форме запускаешь еще один таймер. обычный который будет периодически читать значение message из статического класса и совать его в нужный контрол. инвок тогда не понадобится. но тут опять могут возникнуть тормоза если интервал будет маленьким.
Svintuss вне форума
 
Ответить с цитированием Вверх
Старый 04.08.2012, 22:16   #74
Zewirus
Новичок
 
Пол:Мужской
Регистрация: 29.12.2007
Сообщений: 22
Репутация: 2
По умолчанию Re: Вопросы по C#

Тоесть ты имеешь ввиду отельно создать ссылку, а дальше ее применять в разных потоках?
Zewirus вне форума
 
Ответить с цитированием Вверх
Старый 05.08.2012, 05:38   #75
Svintuss
Неактивный пользователь
 
Аватар для Svintuss
 
Пол:Мужской
Регистрация: 09.01.2007
Сообщений: 71
Репутация: 26
По умолчанию Re: Вопросы по C#

Да, типа буфера обмена. Я правда мел ввиду статический класс для которого не нужно будет создавать экземпляр, но можно и обычный.
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{

   public partial class Form1 : Form
   {
      private static System.Threading.Timer timer; //  обеспечивает каждые тик в отдельном потоке
      private Timer timer2;
      private static bool isBussy = false;

      public Form1()
      {
         InitializeComponent();

         RunTimer(1000);

         timer2 = new Timer { Interval = 5000 };
         timer2.Tick +=new EventHandler((sender, e) => {
            lock (Buffer.Message)
            {
               tbMessage.Text = Buffer.Message;
            }

         });
         timer2.Start();

      }

      /// <summary>
      /// Starts timer
      /// </summary>
      /// <param name="period">timer work period(miliseconds)</param>
      public void RunTimer(int period)
      {
         if (timer == null)
            timer = new System.Threading.Timer(new System.Threading.TimerCallback(timer_OnCallBack));

         timer.Change(0, period);
      }

      private void timer_OnCallBack(object state)
      {
         if (isBussy)
            return;

         isBussy = true;

         try
         {
            //using (MySqlConnection myConnection = new MySqlConnection(myConnectionString))
            {
               //using (MySqlCommand myCommand = new MySqlCommand(CommandText, myConnection))
               {
                  //myConnection.Open();
                  lock (Buffer.Message)
                  {
                     Buffer.Message = DateTime.Now.ToString();                     
                  }
                  //string s = myCommand.ExecuteScalar().ToString();
                  //lock (Buffer.Message)
                  //{
                  //   Buffer.Message = s;
                  //}
               }
            }
         }
         catch (Exception ex)
         {
            //MessageBox.Show("Ошибка: " + ex.Message);
         }
         finally
         {
            isBussy = false;
         }
      }
   }

   public static class Buffer
   {
      public static string Message { get; set; }
   }
}

Последний раз редактировалось Svintuss; 05.08.2012 в 06:04..
Svintuss вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы TOPGAN Скорая помощь 4 14.09.2009 18:25
Вопросы по Win Api :-)) frostmourne Скорая помощь 15 27.02.2009 17:26

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 23:39. Часовой пояс GMT +3.


Copyright ©2004 - 2024 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.20808 секунды с 11 запросами