使用WPF和.NET 4.0。C#靜態作用域問題
我正在使用WebClient
下載一些數據並使用DownloadStringCompletedEventHandler
在完成時觸發我的DownloadCompletedCallback
功能。
我遇到的問題是,當DownloadCompletedCallback
被調用時,我試圖在主窗體上設置標籤的內容並顯示錯誤。
非靜態字段,方法或屬性'Armory.MainWindow.lblDebug'需要對象引用。
據我所知,這是因爲函數DownloadCompletedCallback
被聲明爲靜態,但我不明白爲什麼這很重要。
這是我正在使用的代碼。
public static void DownloadHTML(string address)
{
WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadCompletedCallback);
client.DownloadStringAsync(new Uri(address));
}
private static void DownloadCompletedCallback(Object sender, DownloadStringCompletedEventArgs e)
{
if (!e.Cancelled && e.Error == null)
{
lblDebug.Content = (string)e.Result;
}
}
由於某種原因,昨晚深夜,我一直認爲DownloadCompletedCallback必須是靜態的。原來,沒有一個函數必須是這樣的,它通過移除所有靜態聲明來工作。但是,這個答案幫助我理解靜態函數的方式比我更好。謝謝。 – castis 2011-03-02 14:57:41