亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

跨線程操作無效

跨線程操作無效

楊__羊羊 2019-07-25 09:38:54
跨線程操作無效好的,我知道為什么這會給我這個錯誤:跨線程操作無效:控制從其創建的線程以外的線程訪問的“Form1”。但是......我怎樣才能使這個可行?System.Threading.Thread t = new System.Threading.Thread(()=>{    // do really hard work and then...    listView1.Items.Add(lots of items);    lots more UI work});t.Start();我不關心Thread何時或如何完成,所以我并不關心任何花哨或過于復雜的atm,除非在新的Thread中使用UI時會更容易。
查看完整描述

2 回答

?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

你不能。必須在擁有的線程上執行UI操作。期。

可以做的是在子線程上創建所有這些項目,然后調用Control.Invoke并在那里進行數據綁定。

或者使用 BackgroundWorker

    BackgroundWorker bw = new BackgroundWorker();
    bw.DoWork += (s, e) => { /* create items */ };
    bw.RunWorkerCompleted += (s, e) => { /* databind UI element*/ };

    bw.RunWorkerAsync();


查看完整回答
反對 回復 2019-07-25
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

從另一個線程訪問from的屬性時,拋出此異常。要解決此問題,至少有兩個選項。

  1. 告訴控制不要拋出這些異常(不推薦):

    Control.CheckForIllegalCrossThreadCalls = false;

  2. 使用線程安全函數:

    private void ThreadSafeFunction(int intVal, bool boolVal){
        if (this.InvokeRequired)
        {
            this.Invoke(
                new MethodInvoker(
                delegate() { ThreadSafeFunction(intVal, boolVal); }));
        }
        else
        {
            //use intval and boolval
        }}


查看完整回答
反對 回復 2019-07-25
  • 2 回答
  • 0 關注
  • 471 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號