Shi*_*tal 1 c# console-application winforms
我正在尝试将Winform应用程序转换为控制台应用程序。Winform应用程序有一个delegate handler。如何在console应用程序中编写相同的功能?this.InvokeRequired和的替代品是什么this.Invoke
public delegate void DelegateMessage( string Reply );
_pipeServer.PipeMessage += new DelegateMessage( PipesMessageHandler );
private void PipesMessageHandler( string message ) {
try {
if ( this.InvokeRequired ) {
this.Invoke(new NewMessageDelegate(PipesMessageHandler), message);
}
else {
txtMessage.Text = message;
}
} catch ( Exception ex ) {
Debug.WriteLine( ex.Message );
}
}
Run Code Online (Sandbox Code Playgroud)
你不知道
该Invoke-across线程机制是建立在Windows的消息循环的顶部。
如果您确实需要跨线程调用,您可以做的是创建一个隐藏的窗口并启动消息循环(使用UI和使用控制台不是互斥的),进行工作,在控制台上显示结果以及在以下情况下使用Invoke需要在主线程上执行操作。
但是,如果您也没有UI,则需要在主线程上执行操作的主要原因就消失了。您已经跳到“相当于InvokeRequired什么?” 无需先找到等效的TextBox。
| 归档时间: |
|
| 查看次数: |
3380 次 |
| 最近记录: |