Диспетчер. Проблемы BeginInvoke

Я получаю "Ссылку на объект, требуется для нестатического поля, метода или свойства '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));
                }
            });

        }
    }
}
11
задан cmaduro 8 April 2010 в 00:27
поделиться

1 ответ

Ошибка указывает на то, что вам нужен экземпляр Dispatcher для вызова BeginInvoke , поскольку это метод экземпляра. Где вы получите этот экземпляр, зависит от того, куда вы хотите отправить вызов.

Возможно, вы могли бы попробовать использовать статическое свойство Dispatcher.CurrentDispatcher , чтобы получить экземпляр диспетчера для текущего потока, а затем вызвать BeginInvoke для этого экземпляра. Либо это, либо как-то получить экземпляр диспетчера для вашего метода из конкретного потока, который вы хотите вызвать.

18
ответ дан 3 December 2019 в 01:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: