G'day乡亲,
我觉得我看不到基本的东西。
Action被定义为公共委托void Action()。
DispatchedHandler被定义为公共委托void DispatchedHandler()。
但是,在RunASync行中生成了以下代码:错误CS1503参数2:无法从“ System.Action”转换为“ Windows.UI.Core.DispatchedHandler”。
public static async Task DispatchToUI(Action action, CoreDispatcherPriority priority = CoreDispatcherPriority.Normal )
{
if (CoreApplication.MainView.CoreWindow.Dispatcher.HasThreadAccess)
{
action();
}
else
{
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync( priority, action );
}
}
因此添加显式转换:
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync( priority, (DispatchedHandler)action );
出现错误CS0030失败,无法将类型'System.Action'转换为'Windows.UI.Core.DispatchedHandler'。
那么一个版本的公共代表void()不能转换为另一个版本的公共代表void()吗?
答案 0 :(得分:2)
您不能像这样转换代表,请检查this这样的问题。
但是,您可以从现有的代理中创建一个新的代理:
public static async Task DispatchToUI(Action action, CoreDispatcherPriority priority = CoreDispatcherPriority.Normal)
{
if (CoreApplication.MainView.CoreWindow.Dispatcher.HasThreadAccess)
{
action();
}
else
{
await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(priority, new DispatchedHandler(action));
}
}