2010-05-18 88 views
0

我正在嘗試執行預定操作,比方說通過Web服務調用檢查用戶的信用並更新用戶界面。如何從WPF的內部類訪問父母的成員?

我已經試過quartz.net來實現調度bit.i創建一個內部類在我需要更新的窗口類。內部類有調用Web服務的方法,結果需要顯示回來到用戶界面。 這裏是我做的一個例子。

public partial class Window2 : Window 
{ 
    private int i; 
    public Window2() 
    { 
     InitializeComponent(); 
    } 



    public class Myclass :IJob 
    { 
     public void Execute(JobExecutionContext context) 
     { 
     string result = doMyOperation(); 
     //i'll like to call parent label member of name lblNotif 
     //is something like parent.lblNotif.Content = result; 
     //possible? 
     } 

     public string doMyOperation() 
     { 
     //calling the wermethod to retreive user's balance 
     return result = service.GetUsersBalace(user); 
     } 

    } 
} 

那麼石英鑽頭工作,這個職位是不是石英。這裏是我的問題

問題1:如何訪問Window2控件,如何實現標籤lblNotif?
問題2:如果我對這個問題的看法是錯誤的,那麼最好的做法是解決我的問題,應用程序需要做一個操作,讓我們說每5分鐘更新一次UI。
問題3:我起初試圖使用背景工作,我覺得我不能做它的調度位,這是正確的或我錯了。

感謝那些誰已經評論和遺憾,對於那些誰沒有得到我的post.I的意思希望這將是一個有點clearer.Thanks閱讀

+0

我爲什麼要降低分數? – 2010-05-18 16:02:22

+0

我要走出一條肢體,說可能來自以下: [1]您的線程問題?或使用Quartz?或爲什麼你得到一個例外?或全部三個? [2]您似乎在尋找能夠爲您執行任務的代碼...從線程更新多個窗口並不需要Quartz。 [3]「但我在這裏堆疊」的意思是什麼?......一個小術語很酷,但人們仍然需要了解你。 [4]你的問題並不是關於試圖編寫代碼的藝術或細節,需要基本例外的幫助不會飛。 只是觀察沒有違法。 – Rusty 2010-05-18 16:19:39

+0

@Rusty:[3]我想他的意思是「卡住」。我也得到更多的「外國」氛圍,而不是「文盲」。 – Amadan 2010-05-18 16:40:16

回答

1

你可以使用這個目的便捷類的BackgroundWorker 。欲瞭解更多信息,請參閱this article

+0

感謝您的回覆。我也看到了背景工作者,但是一次操作就不是這樣嗎?我需要什麼是一個scheduler.unless我不知道Backgroudworker的調度器功能.. – 2010-05-18 16:01:06

0

要在單獨的線程上定期執行操作,請使用System.Timers.Timer。它的Elapsed事件總是在新線程上運行。