В настоящее время у меня есть поток, который прослушивает данные из сети, а затем запускает правила для него. Затем я хочу передать данные в графический интерфейс. Я беспокоюсь о тупике в графическом интерфейсе. Я не могу понять, были ли мьютексы на стороне GUI. Я также использую c # и dotnet 3.5.
Что я придумал, так это
1) Использование таймера для создания события и вывода потока. Беспокоятся о производительности.
2) Используйте промежуточное событие для копирования данных в графический интерфейс.
3) Раскройте и выясните многопоточный способ использования GUI.
Как вы думаете, как лучше поступить?
Редактировать: вот решение, которое я использую. Я передаю измененный элемент и затем защищаю большой объект мьютексом. Я использую вспомогательную функцию для переключения потоков, используя InvokeRequired, а затем BeginInvoke с делегатом. Вытащил из чтения ответов и затем по ссылкам до достижения Threading в Windows Forms от Jon Skeet .
delegate void UInt32ParameterDelegate(UInt32 n);
public void UpdateLocation(UInt32 n)
{
if (InvokeRequired)
{
// We're not in the UI thread, so we need to call BeginInvoke
BeginInvoke(new UInt32ParameterDelegate(UpdateLocation), new object[] { n });
return;
}
// Must be on the UI thread if we've got this far
this.engine.location.UpdateBusy.WaitOne();
// do the work in here
this.engine.location.UpdateBusy.ReleaseMutex();
}