WinForm窗體調(diào)用WCF服務(wù)窗體卡死問題
更新時(shí)間:2012年12月29日 10:39:05 作者:
在Winform窗體中調(diào)用部署在其他服務(wù)器中的WCF服務(wù)時(shí),由于調(diào)用服務(wù)需要一定時(shí)延,因此窗體在這段時(shí)間一直卡住不能進(jìn)行其他操作
窗體啟動(dòng)會(huì)啟動(dòng)一個(gè)程序主線程,如果在From_Load()方法中調(diào)用服務(wù),調(diào)用服務(wù)操作會(huì)阻塞主程序。
只需要將調(diào)用服務(wù)的操作放到其他線程中處理就可以解決這個(gè)問題。
比如:
Thread ServiceThread=null;
public void TestForm_Load(object sender, EventArgs e)
{
CheckForIllegalCrossThreadCalls = false;
ServiceThread = new Thread(new ThreadStart(RegService));
ServiceThread.Start();
}
private void RegService()
{
//這里實(shí)現(xiàn)注冊(cè)服務(wù)調(diào)用服務(wù)操作
}
注意:開啟了線程要記得關(guān)閉,不然當(dāng)關(guān)閉該窗體時(shí)其主進(jìn)程關(guān)不掉,因?yàn)檫€有線程存在??梢栽贔romClosed()方法里將該線程關(guān)閉。
private void TestForm_FormClosed(object sender, FormClosedEventArgs e)
{
ServiceThread.Abort();
Application.Exit();
}
只需要將調(diào)用服務(wù)的操作放到其他線程中處理就可以解決這個(gè)問題。
比如:
復(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()
{
//這里實(shí)現(xiàn)注冊(cè)服務(wù)調(diào)用服務(wù)操作
}
注意:開啟了線程要記得關(guān)閉,不然當(dāng)關(guān)閉該窗體時(shí)其主進(jìn)程關(guān)不掉,因?yàn)檫€有線程存在??梢栽贔romClosed()方法里將該線程關(guān)閉。
復(fù)制代碼 代碼如下:
private void TestForm_FormClosed(object sender, FormClosedEventArgs e)
{
ServiceThread.Abort();
Application.Exit();
}
您可能感興趣的文章:
相關(guān)文章
C#設(shè)計(jì)模式之ChainOfResponsibility職責(zé)鏈模式解決真假美猴王問題實(shí)例
這篇文章主要介紹了C#設(shè)計(jì)模式之ChainOfResponsibility職責(zé)鏈模式解決真假美猴王問題,簡單說明了責(zé)任鏈模式的概念,并結(jié)合《西游記》中真假美猴王故事背景為實(shí)例分析了責(zé)任鏈模式的具體使用技巧,需要的朋友可以參考下2017-09-09C#循環(huán)與循環(huán)控制的表達(dá)式樹實(shí)現(xiàn)
這篇文章介紹了C#循環(huán)與循環(huán)控制的表達(dá)式樹實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-01-01淺析C#中的Main(String[] args)參數(shù)輸入問題
本篇文章主要是對(duì)C#中的Main(String[] args)參數(shù)輸入問題進(jìn)行了詳細(xì)的介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助2014-01-01C#微信公眾平臺(tái)開發(fā)之高級(jí)群發(fā)接口
這篇文章主要為大家詳細(xì)介紹了C#微信公眾平臺(tái)開發(fā)之高級(jí)群發(fā)接口的相關(guān)資料,需要的朋友可以參考下2016-03-03C#中前臺(tái)線程和后臺(tái)線程的區(qū)別與聯(lián)系
這篇文章主要介紹了C#中前臺(tái)線程和后臺(tái)線程的區(qū)別與聯(lián)系,本文先講解了它們的區(qū)別,然后給出了一個(gè)例子來驗(yàn)證這些區(qū)別,需要的朋友可以參考下2015-06-06