没有调度员的定义
我收到了错误
‘socketServer.Form1’不包含’Dispatcher’的定义,并且没有扩展方法’Dispatcher’接受类型为’socketServer.Form1’的第一个参数’
从
private void tbAux_SelectionChanged(object sender, EventArgs e) { this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate() { textBox.Text = tbAux.Text; } ); }
根据文档 , Dispatcher
类是我正在使用的命名空间System.Windows.Threading
一部分。
我错过了另一个参考?
如果它是相关的,我在使用服务器/客户端套接字收到“跨线程操作无效”的错误后添加了这个。
WinForms中没有Dispatcher
。
为了发布异步UI更新(这正是Dispatcher.BeginInvoke
所做的),只需使用this.BeginInvoke(..)
它是Control
基类的一个方法。 在你的情况下你可以有这样的东西(从MSDN 模式采用):
private delegate void InvokeDelegate(); private void tbAux_SelectionChanged(object sender, EventArgs e) { this.BeginInvoke(new InvokeDelegate(HandleSelection)); } private void HandleSelection() { textBox.Text = tbAux.Text; }
如果要进行同步更新,请使用this.Invoke
Dispatcher概念属于WPF技术,你在winforms上使用Winforms,你可以使用它或控制.Begin或BeginInvoke这两个都是Dispatcher.Begin或Dispatcher.BeginInvoke的similer
基本上这两个都来自Delegate类,它在运行时由CLR为您实现。