首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dispatcher.BeginInvoke问题

Dispatcher.BeginInvoke问题
EN

Stack Overflow用户
提问于 2010-04-08 08:27:45
回答 2查看 20.7K关注 0票数 11

我得到“此代码的非静态字段、方法或属性'System.Windows.Threading.Dispatcher.BeginInvoke(System.Action)'”需要一个对象引用。

代码语言:javascript
复制
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));
                }
            });

        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-08 08:56:38

该错误指示您需要一个Dispatcher实例来调用BeginInvoke,因为它是一个实例方法。从何处获取该实例取决于您想要在何处调度呼叫。

也许您可以尝试使用静态属性Dispatcher.CurrentDispatcher来获取当前线程的dispatcher实例,然后在该实例上调用BeginInvoke。或者以某种方式从您想要调用的特定线程中获取一个dispatcher实例到您的方法。

票数 18
EN

Stack Overflow用户

发布于 2012-01-25 15:40:46

自从上一次发布这个问题的答案以来,事情发生了一些变化。System.Windows.Threading.Dispatcher.BeginInvoke现在是Deployment.Current.Dispatcher.BeginInvoke

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2596801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档