C#?winform跨線程操作控件的實(shí)現(xiàn)
前提:當(dāng)我們使用Winform開發(fā)的時(shí)候,經(jīng)常會(huì)遇到:System.InvalidOperationException:“線程間操作無效: 從不是創(chuàng)建控件“xxxx”的線程訪問它。”
原因:發(fā)生次異常的原因是因?yàn)閣inform在渲染UI界面和操作界面數(shù)據(jù)的時(shí)候使用的是同一個(gè)線程。當(dāng)我們創(chuàng)建另外一個(gè)線程,去操作此線程的UI控件,會(huì)導(dǎo)致線程不安全。winform為了防止線程不安全,因此杜絕了這個(gè)跨線程操作,并且拋出異常。
異常舉例:創(chuàng)建兩個(gè)控件,一個(gè)是按鈕控件,一個(gè)是lable控件
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(()=>
{
if (this.InvokeRequired)
{
this.Invoke(new Action(() =>
{
lable1.Text = "Hello Thread!";
}));
}
}
);
thread.IsBackground = true;
thread.Start();
}
當(dāng)執(zhí)行此按鈕的時(shí)候,會(huì)導(dǎo)致跨線程操作異常。
解決方案:
使用InvokeRequired屬性,判斷是否是線程安全。
if (this.InvokeRequired)
{
this.Invoke(new Action(() =>
{
lable1.Text = "Hello World!";
}));
}
else
{
lable1.Text = "Hello World!";
}
到此這篇關(guān)于C# winform跨線程操作控件的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)C# winform跨線程操作控件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
c# SQLHelper(for winForm)實(shí)現(xiàn)代碼
數(shù)據(jù)連接池c# SQLHelper 實(shí)現(xiàn)代碼2009-02-02
C# 利用IRawPixels接口遍歷柵格數(shù)據(jù)
本文主要介紹了利用IRawPixels接口遍歷柵格數(shù)據(jù)。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
C#中Byte[]和String之間轉(zhuǎn)換的方法
很多朋友不清楚如何在Byte[]和String之間進(jìn)行轉(zhuǎn)換?下面小編給大家?guī)砹薭yte與string轉(zhuǎn)換的方法,感興趣的朋友參考下吧2016-08-08
C#使用foreach遍歷哈希表(hashtable)的方法
這篇文章主要介紹了C#使用foreach遍歷哈希表(hashtable)的方法,是C#中foreach語句遍歷散列表的典型應(yīng)用,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
Unity的IPostprocessBuildWithReport實(shí)用案例深入解析
這篇文章主要為大家介紹了Unity的IPostprocessBuildWithReport實(shí)用案例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05
DataGridView帶圖標(biāo)的單元格實(shí)現(xiàn)代碼
這篇文章主要為大家詳細(xì)介紹了DataGridView帶圖標(biāo)的單元格的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08
C#實(shí)現(xiàn)數(shù)據(jù)包加密與解密實(shí)例詳解
這篇文章主要介紹了C#實(shí)現(xiàn)數(shù)據(jù)包加密與解密的方法,是一項(xiàng)很實(shí)用的技能,需要的朋友可以參考下2014-07-07
c#調(diào)用c++的DLL的實(shí)現(xiàn)方法
本文主要介紹了c#調(diào)用c++的DLL的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05

