WinForm窗體調(diào)用WCF服務窗體卡死問題
更新時間:2012年12月29日 10:39:05 作者:
在Winform窗體中調(diào)用部署在其他服務器中的WCF服務時,由于調(diào)用服務需要一定時延,因此窗體在這段時間一直卡住不能進行其他操作
窗體啟動會啟動一個程序主線程,如果在From_Load()方法中調(diào)用服務,調(diào)用服務操作會阻塞主程序。
只需要將調(diào)用服務的操作放到其他線程中處理就可以解決這個問題。
比如:
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)注冊服務調(diào)用服務操作
}
注意:開啟了線程要記得關閉,不然當關閉該窗體時其主進程關不掉,因為還有線程存在??梢栽贔romClosed()方法里將該線程關閉。
private void TestForm_FormClosed(object sender, FormClosedEventArgs e)
{
ServiceThread.Abort();
Application.Exit();
}
只需要將調(diào)用服務的操作放到其他線程中處理就可以解決這個問題。
比如:
復制代碼 代碼如下:
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)注冊服務調(diào)用服務操作
}
注意:開啟了線程要記得關閉,不然當關閉該窗體時其主進程關不掉,因為還有線程存在??梢栽贔romClosed()方法里將該線程關閉。
復制代碼 代碼如下:
private void TestForm_FormClosed(object sender, FormClosedEventArgs e)
{
ServiceThread.Abort();
Application.Exit();
}
您可能感興趣的文章:
相關文章
C#設計模式之ChainOfResponsibility職責鏈模式解決真假美猴王問題實例
這篇文章主要介紹了C#設計模式之ChainOfResponsibility職責鏈模式解決真假美猴王問題,簡單說明了責任鏈模式的概念,并結(jié)合《西游記》中真假美猴王故事背景為實例分析了責任鏈模式的具體使用技巧,需要的朋友可以參考下2017-09-09C#循環(huán)與循環(huán)控制的表達式樹實現(xiàn)
這篇文章介紹了C#循環(huán)與循環(huán)控制的表達式樹實現(xiàn),文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01淺析C#中的Main(String[] args)參數(shù)輸入問題
本篇文章主要是對C#中的Main(String[] args)參數(shù)輸入問題進行了詳細的介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01