【问题标题】:How to return value from Dispatcher.Invoke,Which uses delegate function as parameter如何从 Dispatcher.Invoke 返回值,使用委托函数作为参数
【发布时间】:2018-11-27 11:47:36
【问题描述】:

代表声明

 delegate bool newDelegate(ref byte[] b,COMMAND req);


调度员呼叫

Dispatcher.CurrentDispatcher.Invoke( new newDelegate(MainWindow.processBuffer), b, request);


我正在尝试调用一个函数 processBuffer,该函数处理发送的缓冲区并更新 UI,完成后它应该以 bool 值返回成功或失败状态。 我正在使用以下语法来调用该函数。

语法:
公共对象调用(委托方法,参数对象[] args)

我如何访问返回的值?我错过了什么吗?还是做错了?

【问题讨论】:

  • 请注意,CurrentDispatcher 将为它的当前线程创建一个新的 Dispatcher,它还没有一个。这肯定不是你想要的。
  • 使用返回值的调用:docs.microsoft.com/en-us/dotnet/api/…
  • 你的意思是我需要创建一个 Dispatcher 对象然后我应该使用实例调用方法?
  • 除此之外,您不需要将回调声明为委托。只需致电var result = Application.Current.Dispatcher.Invoke(() => yourCallback(ref b, request));

标签: c# .net wpf delegates dispatcher


【解决方案1】:

你的意思是:

var returnedValue = Dispatcher.CurrentDispatcher
  .Invoke(new newDelegate(MainWindow.processBuffer), b, request);

另一种语法:

var returnedValue = Dispatcher.CurrentDispatcher
  .Invoke((newDelegate)(MainWindow.processBuffer), b, request);

bool 将被装在 object 中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-02
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多