WinForm窗體調(diào)用WCF服務(wù)窗體卡死問題
更新時間:2012年12月29日 10:39:05 作者:
在Winform窗體中調(diào)用部署在其他服務(wù)器中的WCF服務(wù)時,由于調(diào)用服務(wù)需要一定時延,因此窗體在這段時間一直卡住不能進(jìn)行其他操作
窗體啟動會啟動一個程序主線程,如果在From_Load()方法中調(diào)用服務(wù),調(diào)用服務(wù)操作會阻塞主程序。
只需要將調(diào)用服務(wù)的操作放到其他線程中處理就可以解決這個問題。
比如:
Thread ServiceThread=null;
public void TestForm_Load(object sender, EventArgs e)
{
CheckForIllegalCrossThreadCalls = false;
ServiceThread = new Thread(new ThreadStart(RegService));
ServiceThread.Start();
}
private void RegService()
{
//這里實現(xiàn)注冊服務(wù)調(diào)用服務(wù)操作
}
注意:開啟了線程要記得關(guān)閉,不然當(dāng)關(guān)閉該窗體時其主進(jìn)程關(guān)不掉,因為還有線程存在??梢栽贔romClosed()方法里將該線程關(guān)閉。
private void TestForm_FormClosed(object sender, FormClosedEventArgs e)
{
ServiceThread.Abort();
Application.Exit();
}
只需要將調(diào)用服務(wù)的操作放到其他線程中處理就可以解決這個問題。
比如:
復(fù)制代碼 代碼如下:
Thread ServiceThread=null;
public void TestForm_Load(object sender, EventArgs e)
{
CheckForIllegalCrossThreadCalls = false;
ServiceThread = new Thread(new ThreadStart(RegService));
ServiceThread.Start();
}
private void RegService()
{
//這里實現(xiàn)注冊服務(wù)調(diào)用服務(wù)操作
}
注意:開啟了線程要記得關(guān)閉,不然當(dāng)關(guān)閉該窗體時其主進(jìn)程關(guān)不掉,因為還有線程存在??梢栽贔romClosed()方法里將該線程關(guān)閉。
復(fù)制代碼 代碼如下:
private void TestForm_FormClosed(object sender, FormClosedEventArgs e)
{
ServiceThread.Abort();
Application.Exit();
}
您可能感興趣的文章:
相關(guān)文章
C#如何Task執(zhí)行任務(wù),等待任務(wù)完成
這篇文章主要介紹了C#如何Task執(zhí)行任務(wù),等待任務(wù)完成,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06
WPF+ASP.NET SignalR實現(xiàn)后臺通知功能的示例代碼
本文以一個簡單示例,簡述如何通過WPF+ASP.NET SignalR實現(xiàn)消息后臺通知以及數(shù)據(jù)的實時刷新,僅供學(xué)習(xí)分享使用,如有不足之處,還請指正2022-09-09
c# String擴展 讓你在PadLeft和PadRight時不再受單雙字節(jié)問題困擾
這篇文章主要介紹了c# String擴展 讓你在PadLeft和PadRight時不再受單雙字節(jié)問題困擾,需要的朋友可以參考下2020-04-04

