C#学习教程:Dispatcher.BeginInvoke问题分享


Dispatcher.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)); } }); } } } 

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

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

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

上述就是C#学习教程:Dispatcher.BeginInvoke问题分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/959784.html

发表评论

邮箱地址不会被公开。 必填项已用*标注