Wpf 調用線程無法訪問此對象,因為另一個線程擁有該對象,解決方案


1.Wpf 多線程修改UI示例:

//啟動線程修改UI,拋出異常
ThreadPool.QueueUserWorkItem((q) =>
{
    button.Content = "張三";
}, null);

解決方案:使用Dispatcher.BeginInvoke+委托方式,修改UI

將修改UI的代碼封裝在委托中

//啟動線程處理
Thread thread1 = new Thread(UpdateBtn);
thread1.IsBackground = true;//設置為后台線程,當主線程結束后,后台線程自動退出,否則不會退出程序不能結束
thread1.Start();
//線程方法,修改Button內容
private void UpdateBtn()
{
    int i = 0;
    while (true)
    {
        i++;
        Action action1 = () =>
        {
            button.Content = i; };
        button.Dispatcher.BeginInvoke(action1); // 如果不設置等待,整個程序死循環
        Thread.Sleep(500);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM