熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

如何在Worker thread中更新UI

2013-11-13 10:26:41  來源: .NET編程 

  Silverlight 中調用服務全部采用異步方式在調用 WCF 時似乎沒有什麼問題

  但是如果要用一個 WebRequest 對象去向某個頁面 Post 一些內容然後獲得回應

  就會發現在 Worker thread 中將無法更新 UI

  在 Windows Forms 裡可以用 ControlInvoke 但是 Silverlight 沒有這個

  Silverlight 中有更好的辦法DependencyObject 類有一個屬性 Dispatcher可以通過它來更新相關 UI 對象

  比如可以這樣寫

  (假設是在上傳一個文件後更新文件列表)          private void UpdateFileList(int newFileId)
        {
           //
        }
        private delegate void UpdateFileListDelegate(int newFileId);
        // Worker thread
        void ResponseReady(IAsyncResult asyncResult)
        {
           //
           // 更新文件列表
           listFilesDispatcherBeginInvoke(
              new UpdateFileListDelegate(UpdateListFile) newFileId
           );
        }

  注意這個 BeginInvoke 方法很先進 他可以接受任何的 delegate還能傳遞任意數目的參數過去

  這裡傳了一個簡單的 newFileId


From:http://tw.wingwit.com/Article/program/net/201311/13641.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.