C# 創(chuàng)建新線程處理事情,防止畫面卡頓

1.解決畫面卡頓問題
2.解決“從不是創(chuàng)建控件的線程訪問它“問題

private void btnLoad_Click(object sender, EventArgs e) {
    Thread thConnect = new Thread(new ThreadStart(BackgroundLoad));
    thConnect.IsBackground = true;
    thConnect.Start();
}

private void BackgroundLoad() {
    //訪問服務器API獲得返回數(shù)據(jù)
    //處理返回數(shù)據(jù)
    string dataFromServer = "aabbccdd";
    //呈現(xiàn)數(shù)據(jù)
    
    ?lblData.Text = dataFromServer; 
    // 直接修改會報錯:從不是創(chuàng)建控件的線程訪問它

    // 解決方法一:如果同一時間只有一個線程操作一個控件,可以在窗體構造函數(shù)中加入下句,就可以
    // Control.CheckForIllegalCrossThreadCalls = false;

    // 解決方法二:不直接修改,而用更安全的 委托 + invoke
    // updateData(dataFromServer);
}

// 創(chuàng)建更新數(shù)據(jù)委托
delegate void updateDataDelegate();

// 更新數(shù)據(jù)
void updateData(string dataFromServer) {
    if (this.InvokeRequired)
        Invoke(new updateDataDelegate(updateData), new object[] { dataFromServer});
    else {
        lblData.Text = dataFromServer;
    }
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容