我有這樣的BackgroundWorker:Silverlight在一段時間(真)會危險嗎?
MyBackgroundWorker.DoWork += ((sender, arg) =>
{
while (true)
{
client.GetkFailuresCompleted += ((s, e) =>
{
int[] arr = JsonHelper.Deserialize<int[]>(e.Result);
int error = (int)((arr[0]/(double)arr[1]) * 100);
Debug.WriteLine("Error %: " + error);
this.Dispatcher.BeginInvoke(() =>
{
ErrorOverviewPointCollection.Clear();
ErrorOverviewPointCollection.Add(new Point(1, 100 - error));
ErrorOverviewPointCollection.Add(new Point(1, error));
});
});
client.GetFailuresAsync();
Thread.Sleep(5000);
}
});
正如你看到的進出口運行它永遠。我沒有執行任何停止/失敗功能來停止BackgroundWorker
,但是我需要嗎?如果用戶關閉瀏覽器,應用程序應該停止運行?
DoWork
訪問web服務,完成後更新一個ObservableCollection
,這是一個數據綁定到silverlight應用程序。
我會假設關閉標籤頁/瀏覽器會殺死其中運行的任何東西。 (在Chrome中,每個選項卡都是一個單獨的進程)。 –
是否有任何理由,而不是使用計時器? –
您每次註冊事件都會造成內存泄漏! [@ErenErsönmez解決方案](http://stackoverflow.com/a/17987379/1425718)似乎是最合適的。 – Tonio