zl程序教程

您现在的位置是:首页 >  后端

当前栏目

WinForm窗体调用WCF服务窗体卡死问题

WCFWinformWCF服务 问题 调用 窗体 卡死
2023-06-13 09:14:43 时间
窗体启动会启动一个程序主线程,如果在From_Load()方法中调用服务,调用服务操作会阻塞主程序。

只需要将调用服务的操作放到其他线程中处理就可以解决这个问题。

比如:
复制代码代码如下:

ThreadServiceThread=null;
publicvoidTestForm_Load(objectsender,EventArgse)
{
CheckForIllegalCrossThreadCalls=false;
ServiceThread=newThread(newThreadStart(RegService));
ServiceThread.Start();
}
privatevoidRegService()
{
//这里实现注册服务调用服务操作
}

注意:开启了线程要记得关闭,不然当关闭该窗体时其主进程关不掉,因为还有线程存在。可以在FromClosed()方法里将该线程关闭。
复制代码代码如下:

privatevoidTestForm_FormClosed(objectsender,FormClosedEventArgse)
{
ServiceThread.Abort();
Application.Exit();
}