C#執行緒間操作無效(跨執行緒訪問控制元件)
很多朋友在剛接觸Winfrom的時候會遇到這個問題:執行緒間操作無效,從不是建立控制元件textbox1的執行緒訪問它。
這裡有提供兩種解決方法。
第一種
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
第二種
使用委託
但是!!! 使用第一種方法在有些情況下會出現問題,使用第二種方法的話每個專案都這麼去寫的話就會很麻煩 所以本人封裝了一個簡單的類庫,用於處理跨執行緒操作控制元件,此類庫的版本為.NET 4.0,有需要的朋友可以前往下載
下載連結 http://pan.baidu.com/s/1boP4BTl
密碼:h8ba
開啟之後可以看到兩個dll檔案,因為封裝的類庫中有使用到excel操作,如果不需要用到excel操作的話 無需下載apose.cells.dll
在專案中引用controlhelper之後跨執行緒操作控制元件就變得很簡單
提供該類庫旨於幫助小夥伴們寫不必要的程式碼
如有需要原始碼的朋友可以聯絡博主
相關推薦
C#執行緒間操作無效(跨執行緒訪問控制元件)
很多朋友在剛接觸Winfrom的時候會遇到這個問題:執行緒間操作無效,從不是建立控制元件textbox1的執行緒訪問它。 這裡有提供兩種解決方法。 第一種 System.Windows.Form
C#執行緒之間操作無效|不允許訪問控制元件(c# 執行緒間操作無效: 從不是建立控制元件“”的執行緒訪問它)
解決方法 1.建立事件委託 c#不允許對跨執行緒的控制元件的訪問,如需操作跨執行緒的操作需要通過委託(delegate),即是函式指標來操作跨執行緒。說明dgList控制元件不是該執行緒的控制元件,需要使用委託操作。比如:delegate void SetListBoxCa
執行緒間操作無效: 從不是建立控制元件“label1”的執行緒訪問它。C#定時器
我在使用執行緒操作winfrom控制元件物件的時候報錯,後來才發現問題所在:多執行緒中直接呼叫介面控制元件的方法是錯誤的做法,Invoke 和 BeginInvoke 就是為了解決這個問題而出現的,使你在多執行緒中安全的更新介面顯示 使用委託的時候是使用 Invoke
C#中執行緒間操作無效: 從不是建立控制元件 txtBOX 的執行緒訪問它
delegate void 委託名(方法名); void 方法名() { if(txtBox.invokeRequered) { 委託名 d=new 委託名(); txtBox.invoke(d); } else { 具體的執行語句 } } 原來是存在跨執行緒呼叫控制元件的問題
C# 執行緒間操作無效
轉載出處 許多新學習C#的新手進行介面操作的時候,在啟用新執行緒時操作介面元素經常會遇到的問題,我曾經也是,特此來分享下經驗: 以下面小列子為例,給出這個問題的解決辦法。下面的列子是以一個計數器為列講解的。 public Form1() { InitializeCom
c#關於“執行緒間操作無效: 從不是建立控制元件的執行緒訪問它”的問題
摘自:http://blog.csdn.net/hongkaihua1987/article/details/7439231 http://hi.baidu.com/jcserver/blog/item/b7e8da3e2f6f35f0828b13f1.html 經典
C#中執行緒間操作無效: 從不是建立控制元件 txtBOX 的執行緒訪問它。
delegate void 委託名(方法名); void 方法名() { if(txtBox.invokeRequered) { 委託名 d=new 委託名(); txtBox.invoke(d); } else { 具體的執行語句 } } 原來是存在跨執行緒呼叫控制元件的
c#中Invoke使用方法(執行緒間操作無效: 從不是建立控制元件的執行緒訪問它。那麼建立它的執行緒是哪個執行緒?)
CSDN線下沙龍開發者與企業雲通訊服務選型CSDN線下沙龍開發者與企業雲通訊服務選型 匕敵都s68AG賞臥7H7攪第恐蛹爻逞 《 http://pregnant.baidu.com/article/cb559e95710bac242ace33686de6d5eb 》 臨磷
執行緒間操作無效: 從不是建立控制元件“XXX”的執行緒訪問它 [Winform]執行緒間操作無效,從不是建立控制元件的執行緒訪問它的幾個解決方案,async和await?
方法1 Invoke((MethodInvoker)(()=>{XXX.Text = message;})); 方法2 取消跨執行緒檢查 Control.CheckForIllegalCrossThreadCalls = false;
invoke委託解決“執行緒間操作無效: 從不是建立控制元件的執行緒訪問它”的問題
###1.問題描述 線上程中更改控制元件屬性時,編譯器報錯:“執行緒間操作無效: 從不是建立控制元件的執行緒訪問它”。檢視資料後得知這個問題的根本在於,建立新執行緒後,新執行緒跟主執行緒同步執行,這時如果新執行緒提出對控制元件進行修改,將被編譯器報錯,因為可能會出現主執行緒跟新執行緒同時
執行緒間操作無效: 從不是建立控制元件“”的執行緒訪問它~~~的解決方法~
http://www.cnblogs.com/HaoKeKe/p/4427902.html http://blog.csdn.net/dongzhe8/article/details/45791877 Control.CheckForIllegalCrossThreadCa
執行緒間操作無效: 從不是建立控制元件“progressBar1”的執行緒訪問它
2、建立代理delegate void SetTextCallback(string text);建立和啟動執行緒this.demoThread = new Thread(new ThreadStart(this.ThreadProcUnsafe));
執行緒間操作無效: 從不是建立控制元件的執行緒訪問它的三種解決方法
今天遇到這個問題,百度了下,把解決的方法總結出來。 我們在ui執行緒建立的子執行緒操作ui控制元件時,系統提示錯誤詳細資訊為: 執行緒間操作無效: 從不是建立控制元件“XXX”的執行緒訪問它。 就我知道的有三種方法,先看一下msdn的介紹: 訪問 Windows 窗
執行緒間操作無效: 從不是建立控制元件...的解決辦法
執行緒間操作無效: 從不是建立控制元件“…”的執行緒訪問它。它在VS2003裡邊不會出現這個問題,在VS2005和VS2008版本里就會出這個問題的,主要是為了安全考慮哦,目前我知道的解決方法有兩個… 第一: 使用遮蔽執行緒間進行不安全監測的方法。 Control.
BackGroundWorker解決 執行緒間操作無效: 從不是建立控制元件的執行緒訪問它
在程式設計中經常會遇到在一個按鈕中執行復雜操作,並將複雜操作最後返回的值加入一個ListView或ComboBox中候選。這個時候程式會卡,當程式設計師將這些卡程式碼放進執行緒(Thread)中後發現當對控制元件操作時出現“執行緒間操作無效: 從不是建立控制元件的執行緒訪問它
執行緒間操作無效:從不是建立控制元件”txtContent”的執行緒訪問它
出現的問題: void comm_DataReceived(object sender, SerialDataReceivedEventArgs e) { byte[] readBuffer = new byte[seriaRe
iOS開發——純程式碼介面(UIViewController和文字類控制元件)
一、新增檢視控制器(UIViewController) 建立一個ViewController類繼承UIViewController ViewController.m做如下修改 - (void)viewDidLoad { [super viewDid
Android自定義View(CustomCalendar-定製日曆控制元件)
目錄: 應專案需求,需要做一個日曆控制元件,效果圖如下: 接到需求後,沒有立即查詢是否有相關開源日曆控制元件可用、系統日曆控制元件是否能滿足 ,第一反應就是這個控制元件該怎麼畫?誰叫咱自定義控制元件技術牛逼呢O
c#多執行緒操作測試(阻塞執行緒,結束任務)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Te
多執行緒常用操作方法(sleep、yield、join)
執行緒的命名與取得 執行緒的命名: 通過構造方法在建立執行緒時設定執行緒名稱 直接繼承Thread類: public Thread (String name); Runable或者Callable介面實現多執行緒: public Thread (Run