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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2016, 12:42   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию C# Особенности синхронизации потоков

Я услышал про lock. Но у меня сейчас проблема такая.
TCP-клиент отослал серверу данные один раз и замолк на некоторое время. Эти данные перехватил один из потоков сервера и записал в свою местную переменную.
А вот дальше я и запутался. У меня Windows Forms. Чтобы вывести переменную в текстовое поле, нужно, чтобы она была в основном потоке. А ее нет, потому что переменная не глобальная. Вот ушел я от этой проблемы - сделал глобальную переменную. И все бы хорошо, но...

TCP-Клиент отсылает данные 1 раз. На сервер они приходят тоже один раз. Но с этого момента глобальная переменная не равна "", и в текст выводятся принятые данные. Я прописал процесс вывода так:
Код:
this.Controls["richTextBox2"].Text += SocOut;
и сами понимаете, мне полилось в текст снова и снова в текст лишь однажды принятое значение SocOut.

Допустим, я напишу так:
Код:
this.Controls["richTextBox2"].Text = SocOut;
но тогда текст показывает только те данные, которые приняты сейчас. И тут я понял, что переменная SocOut содержит что-то не то. Дело в том, что я тестировал ранее клиент с другим сервером - клиент отсылает 65 кБ данных, и так и запланировано, вот они:
Цитата:
Iout[itmr-1] "OFDM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5,244181 10,33034 15,29213 18,37435 15,44085 4,509331 -9,212887 -16,18758 -12,35347 -3,82434 0,6861253 0,3584627 1,510979 6,605219 8,98082 2,02161 -9,599608 -13,7213 -6,085603 3,449229 3,442037 -4,024651 -6,428113 1,699613 11,21474 11,4111 5,137217 4,072535 10,33624 11,31779 -2,588248 -21,13767 -23,8078 -5,971587 12,65457 10,66934 -8,60534 -20,96063 -11,17975 9,076466 17,21158 7,789989 -2,939659 0,1320237 11,89507 15,68422 5,855718 -6,147157 -8,183533 -2,670376 -1,082777 -7,241968 -12,8189 -9,83947 -1,617755 2,36028 -0,7113124 -4,026156 -0,8485339 7,253295 13,7484 15,32434 13,41781 9,304047 2,049925 -7,570446 -14,66339 -14,87763 -10,13482 -6,593561 -6,830828 -6,864923 -2,202773 5,549198 10,72163 11,00429 9,554208 9,331016 8,561548 4,191694 -2,130781 -5,285441 -4,114205 -3,919474 -9,150654 -15,75408 -14,61454 -3,077271 10,23875 14,47017 8,51666 1,228786 0,0944015 2,985833 2,76417 -2,338941 -6,503272 -4,540396 0,9534444 2,902124 -1,02502 -5,196455 -2,849911 5,478122 12,01096 9,965116 0,6745908 -7,753144 -8,414522 -2,111897 3,693577 2,176131 -6,299565 -14,43524 -14,7654 -6,359305 5,07894 13,30606 16,68594 16,90093 14,17645 6,373529 -6,308491 -17,8164 -20,3099 -12,22526 -0,3103223 7,441928 9,405002 9,215091 8,40798 3,818718 -6,035169 -14,98503 -13,91858 -2,065004
........................
8,797962 4,860352 1,366879 -0,7048732 -6,284879 -18,64665 -24,41728 -4,577946 31,36258 43,79272 13,02424 -26,26033 -29,18167 " string
Но содержание SocOut такое:
Цитата:
SocOut "<EOF>OFDM 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5,244181 10,33034 15,29213 18,37435 15,44085 4,509331 -9,212887 -16,18758 -12,35347 -3,82434 0,6861253 0,3584627 1,510979 6,605219 8,98082 2,02161 -9,599608 -13,7213 -6,085603 3,449229 3,442037 -4,024651 -6,428113 1,699613 11,21474 11,4111 5,137217 4,072535 10,33624 11,31779 -2,588248 -21,13767 -23,8078 -5,971587 12,65457 10,66934 -8,60534 -20,96063 -11,17975 9,076466 17,21158 7,789989 -2,939659 0,1320237 11,89507 15,68422 5,855718 -6,147157 -8,183533 -2,670376 -1,082777 -7,241968 -12,8189 -9,83947 -1,617755 2,36028 -0,7113124 -4,026156 -0,8485339 7,253295 13,7484 15,32434 13,41781 9,304047 2,049925 -7,570446 -14,66339 -14,87763 -10,13482 -6,593561 -6,830828 -6,864923 -2,202773 5,549198 10,72163 11,00429 9,554208 9,331016 8,561548 4,191694 -2,130781 -5,285441 -4,114205 -3,919474 -9,150654 -15,75408 -14,61454 -3,077271 10,23875 14,47017 8,51666 1,228786 0,0944015 2,985833 2,76417 -2,338941 -6" string
Это может быть какая-то проблема с синхронизацией в сервере, или что это? Я просто в шоке пока, не знаю, как подступиться и что проверить.
Krasi вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема синхронизации потоков vahdorf Общие вопросы Delphi 18 13.10.2014 09:34
Проблема синхронизации WinAPI потоков Vadik(R) Общие вопросы Delphi 1 13.01.2014 01:27
AccessVolation при синхронизации потоков hiho Общие вопросы Delphi 2 27.10.2012 08:29
Проблема синхронизации потоков Teor Общие вопросы .NET 4 17.06.2011 15:50
Особенности вертикальной синхронизации Lotles Компьютерное железо 3 14.12.2010 17:48