Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.03.2015, 10:15   #1
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию Путает строки, значения и тп..

Код:
    System.Threading.Thread.Sleep(10);
    tablica.BeginInvoke((Action)(() => tablica.Rows.Insert(0, komp, mark)));
    System.Threading.Thread.Sleep(10);
С такой конструкцией все ок, добавляет строчку в таблицу из другого потока.

Если убрать System.Threading.Thread.Sleep(10);, тогда получиться следующее.

К примеру 5 строчек из 40 добавили, все ок. С последующими начинается путаница. То компанию напутает, то марку и тд. То вовсе одну строчку заменит другой.

Как избавится от System.Threading.Thread.Sleep(10); и при этом , чтобы все работало на отлично...??
Predator199 вне форума Ответить с цитированием
Старый 21.03.2015, 10:23   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Что такое komp и mark и как вы их используете? Весь код покажите.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 21.03.2015, 10:41   #3
Predator199
Форумчанин
 
Аватар для Predator199
 
Регистрация: 26.01.2012
Сообщений: 648
По умолчанию

Код:
 new Action(() =>{
	
      foreach (var HN in table.Elements("tr")){
	  komp = HN.Descendants("td").ElementAt(8).InnerText;
          mark = HN.Descendants("td").ElementAt(4).InnerText;	  
					
          System.Threading.Thread.Sleep(10);
          tablica.BeginInvoke((Action)(() => tablica.Rows.Insert(0, komp, mark)));
          System.Threading.Thread.Sleep(10);
       }

}).BeginInvoke(null, null);
...
Predator199 вне форума Ответить с цитированием
Старый 21.03.2015, 11:04   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

comp и mark где и как объявлены? Где это происходит? Как потоки создаются?

В общем если у вас несколько потоков и они используют одни и те же переменные (без синхронизации), то у вас race condition, так нельзя. Нужна либо синхронизация (lock и т.п.), либо каждому потоку отдельные переменные, а не общие. В данном случае видимо лучше второе.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление строки и значения в Stringgrid artemavd Общие вопросы Delphi 2 23.12.2012 15:18
имя переменной из значения строки TaTT DoGG C# (си шарп) 3 07.11.2011 17:04
Разделение строки на значения KLOP Общие вопросы C/C++ 5 12.02.2011 15:11
Присвоение значения строки Sam Gold PHP 0 11.05.2010 13:29
Выборка значения, по признаку, из строки SLP Microsoft Office Excel 4 12.02.2009 16:33