」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何從 WPF 中的非調度程序執行緒修改 ObservableCollection?

如何從 WPF 中的非調度程序執行緒修改 ObservableCollection?

發佈於2024-11-08
瀏覽:878

How to Modify an ObservableCollection From a Non-Dispatcher Thread in WPF?

「這種類型的CollectionView 不支援從與調度程式執行緒不同的執行緒更改其SourceCollection」

問題描述

A DataGrid 綁定非同步填充的ObservableCollection 會拋出錯誤,指出不允許從非Dispatcher 執行緒對SourceCollection 進行更改。

解決方案

問題是由線程關聯引起的。 ObservableCollection 最初是在 UI 執行緒上建立的,因此只能從 UI 執行緒存取它。要從不同的線程修改它,必須將委託放置在 UI Dispatcher 上。

更新了 ViewModel 程式碼

public void Load()
{
    matchList = new List();
    matchList = proxy.GetMatch().ToList();

    foreach (EfesBet.DataContract.GetMatchDetailsDC match in matchList)
    {
        App.Current.Dispatcher.Invoke((Action)delegate
        {
            _matchObsCollection.Add(match);
        });
    }
}

透過呼叫 UI Dispatcher 上的委託,在 UI 執行緒上安排對 ObservableCollection 的添加,從而解決異常。

增強的綁定和刷新

用於非同步綁定和刷新 DataGrid,請考慮在 ViewModel 屬性上使用 INotifyPropertyChanged 並呼叫 Dispatcher 來刷新 UI 元素。

最新教學 更多>
  • 在您的 Go API 中新增 API 速率限制
    在您的 Go API 中新增 API 速率限制
    好吧,夥計們,到目前為止我們已經介紹了很多內容:JWT 身份驗證、資料庫連接、日誌記錄和錯誤處理。但是,當您的 API 開始受到請求的衝擊時會發生什麼?如果沒有控制,高流量可能會導致反應時間緩慢甚至停機。 ? 本週,我們將透過實施速率限制來控制流量來解決這個問題。我們將使用簡單有效的 golang...
    程式設計 發佈於2024-11-08
  • 我使用 Snowflake (SiS) 中的 Streamlit 製作了一個令牌計數檢查應用程式
    我使用 Snowflake (SiS) 中的 Streamlit 製作了一個令牌計數檢查應用程式
    介紹 您好,我是 Snowflake 的銷售工程師。我想透過各種貼文與大家分享我的一些經驗和實驗。在本文中,我將向您展示如何使用 Snowflake 中的 Streamlit 建立應用程式來檢查令牌計數並估算 Cortex LLM 的成本。 註:本文僅代表個人觀點,不代表Snow...
    程式設計 發佈於2024-11-08
  • 如何修復 MySQL 中的「標頭和客戶端庫次要版本不符」?
    如何修復 MySQL 中的「標頭和客戶端庫次要版本不符」?
    標頭版本不符:解決困境簡介通常在資料庫連接的上下文中遇到,錯誤訊息「標頭和客戶端庫次要」版本不符」表示MySQL頭的版本和客戶端庫的版本之間存在差異。 ]1。到可用的最新版本。了更優化且功能豐富的介面。 ]其他注意事項PDO要確保PDO 以整數而非字串形式傳回整數值,請修改PDO 連線設置,如下所示...
    程式設計 發佈於2024-11-08
  • 你可能不需要 monorepo
    你可能不需要 monorepo
    如果你在同一個「monorepo」中有多個 npm 包,如果這是一個大而連貫的包,你和你的用戶可能會過得更好。 許多簿記和管理任務就消失了。 三次搖動都會刪除未使用的程式碼。 每個包之間的不健康依賴關係是不可能的,因為一切都只是依賴關係。 不要考慮“monorepo”,而是考慮一個整體。也就...
    程式設計 發佈於2024-11-08
  • 如何在 PHP 中使用 cURL 建立持久的 HTTP 連線?
    如何在 PHP 中使用 cURL 建立持久的 HTTP 連線?
    如何在 PHP 中使用 cURL 實現持久 HTTP 連線? 在 PHP 中使用 cURL 函式庫進行 HTTP 請求時,由於以下原因,網路介面上可能會出現高中斷率:連線開口過多。當向外部 API 或資料庫伺服器發出大量請求時,這一點尤其明顯。 要解決此問題,了解 cURL 是否支援持久連接以及如何...
    程式設計 發佈於2024-11-08
  • 什麼時候應該使用 Tkinter Entry 的 Get 函數來檢索使用者輸入?
    什麼時候應該使用 Tkinter Entry 的 Get 函數來檢索使用者輸入?
    Tkinter Entry 的 get 功能:了解用法和計時在 Tkinter 中,Entry 小部件可讓使用者提供文字輸入。為了檢索該輸入,通常使用 get() 函數。然而,如果過早呼叫 get() 函數,可能會出現意外行為。 取得輸入:計時很重要提供的範例程式碼的問題是 get () 函數在 G...
    程式設計 發佈於2024-11-08
  • Java Spring Boot使用登入gradle項目
    Java Spring Boot使用登入gradle項目
    這裡的動機是我花了太多時間試圖弄清楚如何在 gradle 中的 spring boot 中使用 log4j 添加日誌記錄。這裡的 gradle 部分是給我最痛苦的部分,因為我能找到的所有文件都是針對 maven 的。 因此,我在這裡記錄我的發現,以便下一個正在尋找此內容的人可以找到我的帖子並能夠快...
    程式設計 發佈於2024-11-08
  • 使用 Twig 透過 PHP 渲染 Markdown
    使用 Twig 透過 PHP 渲染 Markdown
    Twig 是使用 Symfony 开发 Web 应用程序时渲染 HTML 的首选模板引擎。 然而,Twig 的灵活性不仅仅限于生成 HTML 页面。它可以成为跨多个渠道交付内容的强大工具,例如生成 Markdown 文件、JSON 输出,甚至纯文本,所有这些都来自同一组内容。 这种适应性允许您为不同...
    程式設計 發佈於2024-11-08
  • 以下是一些標題選項,請記住問題格式的需要:

**專注於挑戰:**

* **如何使用 AST 以程式方式修改 Python 原始碼?
* **什麼工具Ena
    以下是一些標題選項,請記住問題格式的需要: **專注於挑戰:** * **如何使用 AST 以程式方式修改 Python 原始碼? * **什麼工具Ena
    Python 原始碼修改的 AST 操作以程式設計方式編輯 Python 原始程式碼通常涉及讀取程式碼並將其解析為抽象語法樹 (AST)。然而,修改 AST 並寫回修改後的程式碼以產生新的原始檔案對於像 ast 和編譯器這樣的標準 Python 模組來說可能具有挑戰性。 lib2to3 函式庫提供了...
    程式設計 發佈於2024-11-08
  • 如何解決 PHP CURL CURLOPT_SSL_VERIFYPEER 中的「SSL CA 憑證問題」錯誤?
    如何解決 PHP CURL CURLOPT_SSL_VERIFYPEER 中的「SSL CA 憑證問題」錯誤?
    PHP CURL CURLOPT_SSL_VERIFYPEER:解決憑證驗證問題儘管努力使用CURLOPT_SSL_VERIFYPEER 停用SSL 憑證驗證,但某些使用者還是遇到了「在PHP 中執行CURL 請求時出現SSL CA 憑證問題(路徑?存取權?)。解決問題要解決此問題,必須了解CURL...
    程式設計 發佈於2024-11-08
  • 使用 JavaScript 進行函數式編程
    使用 JavaScript 進行函數式編程
    JavaScript 中的函數式程式設計是什麼? F函數式程式設計是最近流行的一種範式,因為它允許您編寫更模組化、可重複使用且易於維護的程式碼。函數式程式設計是一種依賴兩個主要概念的程式設計範例。 首先,程式碼以函數的形式編寫,對資料進行操作,不改變任何參數。不會修改現有數據,而...
    程式設計 發佈於2024-11-08
  • MySQL 中 INSERT 語句的最大大小是多少?
    MySQL 中 INSERT 語句的最大大小是多少?
    MySQL INSERT 語句中的查詢大小限制在 MySQL 中執行 INSERT 語句時,考慮潛在的大小限制至關重要。本文探討了決定單一 INSERT 語句中可以包含的最大行數和位元組數的因素。 行計數限制MySQL 不強制執行限制可以使用“INSERT ... SELECT”模式插入的行數。假設...
    程式設計 發佈於2024-11-08
  • 如何從原始清單中每第 N 個項目產生一個新清單?
    如何從原始清單中每第 N 個項目產生一個新清單?
    以原始清單中的每 N 個項目建立清單在資料分析或程式設計中,通常需要使用清單。一項常見任務是建立一個僅包含原始清單中每第 N 個項目的新清單。例如,給定一個從 0 到 1000 的整數列表,我們如何獲得一個僅包含第一個和後續第 10 個項目的列表? 使用傳統的 for 循環,我們可以如下完成此任務:...
    程式設計 發佈於2024-11-08
  • 將透過 Kalp API Gateway 產生的 API 端點與您的前端應用程式集成
    將透過 Kalp API Gateway 產生的 API 端點與您的前端應用程式集成
    Introduction Hello, readers; congratulations on making it to the final part of this tutorial series. Now that you have learnt how to create a...
    程式設計 發佈於2024-11-08
  • 有毒的 Laravel 社區如何摧毀了我對程式設計的熱情。
    有毒的 Laravel 社區如何摧毀了我對程式設計的熱情。
    我仍然记得那件事就像昨天一样,但当我踏上成为一名 Web 开发人员的旅程时,已经是二十多年前了。 我拨打了我的 56k 调制解调器,占用了电话线,这样我就可以浏览一些我最喜欢的网站。然后我想知道如何自己制作。 我发现我可以在 Microsoft Word 中处理 HTML。我创建了一个包含滚动字幕、...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3