繁体   English   中英

Dispatcher.BeginInvoke问题

[英]Dispatcher.BeginInvoke problems

我得到“此代码的非静态字段,方法或属性'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));
                }
            });

        }
    }
}

自从针对这个问题发布了最后一个答案后,情况发生了一些变化。 System.Windows.Threading.Dispatcher.BeginInvoke现在是Deployment.Current.Dispatcher.BeginInvoke

该错误表明您需要一个Dispatcher实例来调用BeginInvoke因为它是一个实例方法。 获得该实例的位置取决于您要拨打电话的位置。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM