Я получаю "Ссылку на объект, требуется для нестатического поля, метода или свойства '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));
}
});
}
}
}
Ошибка указывает на то, что вам нужен экземпляр Dispatcher
для вызова BeginInvoke
, поскольку это метод экземпляра. Где вы получите этот экземпляр, зависит от того, куда вы хотите отправить вызов.
Возможно, вы могли бы попробовать использовать статическое свойство Dispatcher.CurrentDispatcher
, чтобы получить экземпляр диспетчера для текущего потока, а затем вызвать BeginInvoke
для этого экземпляра. Либо это, либо как-то получить экземпляр диспетчера для вашего метода из конкретного потока, который вы хотите вызвать.