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

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

從 BackgroundWorker 更新表單上的狀態條

從 BackgroundWorker 更新表單上的狀態條

C#
Helenr 2022-06-12 16:29:35
我目前正在采用現有設計并重構它的某些方面。我試圖將 BackgroundWorker 類包裝在一個單獨的對象中,并在單獨的線程上調用數據導入。我唯一的問題是讓 StatusStrip 對象在表單上更新。該應用程序使用反射,我在包裝導入例程時考慮了這一點。到目前為止,我已經消除了所有的交叉線程。我已將用于更新表單中的 StatusStrip 的回調重定向到此包裝器對象中,并且數據導入正在回調包裝器。表單中有一個用于處理原始回調的方法。我只需要弄清楚如何跨線程調用更新。異步操作部分的工作很大程度上歸功于我從 stackoverflow 中獲得的信息。除了這個愚蠢的 StatusStrip 之外,所有這些都已連接起來。
查看完整描述

1 回答

?
鳳凰求蠱

TA貢獻1825條經驗 獲得超4個贊

所以,它成功了。


如果在 BackgroundWorker 包裝類中被回調,我按照尼克的建議做了以下事情:


private void updtStatus(object sender, EventArgs e)

    { if (MainForm.InvokeRequired)

      { MainForm.Invoke(new DoUIWorkHandler(MainForm.updtStatus), new object[] { sender, e }); }

    }

注意:MainForm.updtStatus 是表單上的原始事件,數據導入回調以更新 StatusStrip。


我在另一個stackoverflow線程上發現了這個:


public delegate void DoUIWorkHandler();

而且,我在 BackgroundWorker 包裝器的頂部修改了我的代碼的委托:


public delegate void DoUIWorkHandler(object sender, EventArgs args);

這是我錯過的代表作品!奇跡般有效!感謝您在這件事上的所有幫助。


查看完整回答
反對 回復 2022-06-12
  • 1 回答
  • 0 關注
  • 102 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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