我得到“此代码的非静态字段、方法或属性'System.Windows.Threading.Dispatcher.BeginInvoke(System.Action)'”需要一个对象引用。
private void ResponseCompleted(IAsyncResult result)
{
HttpWebRequest request = result.AsyncState as HttpWebRequest;
HttpWebResponse response = request.EndGetResponse(result) as HttpWebResponse;
using (StreamReader sr = new StreamReader(response.GetResponseStream()))
{
Dispatcher.BeginInvoke( () => {
try
{
XDocument resultsXml = XDocument.Load(sr);
QueryCompleted(new QueryCompletedEventArgs(resultsXml));
}
catch (XmlException e)
{
XDocument errorXml = new XDocument(new XElement("error", e.Message));
QueryCompleted(new QueryCompletedEventArgs(errorXml));
}
});
}
}
}发布于 2010-04-08 08:56:38
该错误指示您需要一个Dispatcher实例来调用BeginInvoke,因为它是一个实例方法。从何处获取该实例取决于您想要在何处调度呼叫。
也许您可以尝试使用静态属性Dispatcher.CurrentDispatcher来获取当前线程的dispatcher实例,然后在该实例上调用BeginInvoke。或者以某种方式从您想要调用的特定线程中获取一个dispatcher实例到您的方法。
发布于 2012-01-25 15:40:46
自从上一次发布这个问题的答案以来,事情发生了一些变化。System.Windows.Threading.Dispatcher.BeginInvoke现在是Deployment.Current.Dispatcher.BeginInvoke
https://stackoverflow.com/questions/2596801
复制相似问题