2013-03-14 80 views
0

我在WPF應用程序中遇到問題。我有一個自定義CircularProgressBar。當我從數據庫中檢索數據時,需要幾秒鐘的時間。如何在C#中同時運行兩個操作

我想在檢索數據時在我的應用中顯示CircularProgressBar。在我的自定義類(Printer

CircularProgressBar cb = new CircularProgressBar(); 
stk.Children.Add(cb); 

ThreadStart thStart = delegate() 
{ 
    ThreadStart inv = delegate() 
    { 
     stk.Children.Remove(cb); 

    }; 
    this.Dispatcher.Invoke(inv, null); 
}; 

Thread myThread = new Thread(thStart); 
myThread.Start(); 

此代碼運行CircularProgressBar

在哪裏我把這個窗口:

Printer p = new Printer(); 

p.Show(); 

//Code For retrieve Data from DataBase 

p.close(); 

所以出現這種情況:CircularProgressBar顯示幾秒鐘,並沒有運行。我的bug在哪裏?

+2

使用後臺工作者。 [這可能有所幫助](http://stackoverflow.com/questions/5483565/how-to-use-wpf-background-worker) – musefan 2013-03-14 17:51:32

+0

@abbas Pirmoradi:使用後臺工作,並用progreschanged事件更新進度欄值。 – KF2 2013-03-14 18:06:04

回答

1

您可以簡單地使用背景工人:

private BackgroundWorker bw = new BackgroundWorker(); 

bw.WorkerReportsProgress = true; 
bw.WorkerSupportsCancellation = true; 
bw.DoWork += new DoWorkEventHandler(bw_DoWork); 
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged); 
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted); 

private void bw_DoWork(object sender, DoWorkEventArgs e) 
{ 
//load data from database 
System.Threading.Thread.Sleep(1); 
worker.ReportProgress(progressbar_value); 
} 

private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e) 
{ 
Progress.value= progressbar_value; 
} 

private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) 
{ 
//progress completed 
} 
0

這不是你如何在WPF做的東西 - 使用一個模型來從數據庫中填充數據,比CircularProgressBar知名度綁定到 狀態你」重新進入(當你完成任務時隱藏它)。 所有這些樣板代碼應該在xaml中。

0

如果我是你,我會通過使用數據綁定和依賴屬性來簡化生活。 遵循什麼步驟。

1)在自定義進度條中創建一個名爲IsBusyProperty的依賴屬性,其類型爲bool。

2)向其值更改事件註冊委託(這是在創建依賴項屬性時完成的)。

3)現在,您可以將此IsBusyProperty綁定到代碼中的一個狀態,表示嘿,我很忙。

4)當這個值被設置爲true時,你會得到你的進度條來開始它的魔法。 5)當它被設置爲false時,你停止魔法。

+0

以上所有對我有用。感謝所有你。我試試這個 – 2013-03-16 11:41:53

0

創建一個旋轉故事板的控件要簡單得多,只要你的UI沒有鎖定,它就會旋轉,然後簡單地殺死它。

Try this

相關問題