我有一个带有按钮的用户控件,该控件从带有RoutedEventHandler
的窗口中使用:
用户控件:
public event RoutedEventHandler IniciarPLC_Click;
private void BtnIniciarPLC_Click(object sender, RoutedEventArgs e)
{
.....
if (IniciarPLC_Click != null)
{
IniciarPLC_Click(this, new RoutedEventArgs());
}
......
}
窗:
XAML:
<ucUserControl x:Name="cntBarraHerramientas" IniciarPLC_Click="CntBarraHerramientas_IniciarPLC_Click"/>
C#:
private void CntBarraHerramientas_IniciarPLC_Click(object sender, RoutedEventArgs e)
{
....
}
但是我需要在CntBarraHerramientas_IniciarPLC_Click
中调用一个async
方法,所以我通过async Task
更改了void
返回类型,并使用await
调用该方法:
private async Task CntBarraHerramientas_IniciarPLC_Click(object sender, RoutedEventArgs e)
{
await AsyncMethod(...);
}
我有这个错误:
无法从文本"CntBarraHerramientas_IniciarPLC_Click"创建"IniciarPLC_Click"。' ArgumentException:不能链接到目标方法,因为其安全性透明度或签名与委托类型的安全性或签名不兼容。
问题是我如何使用RoutedEventHandler
调用async
方法?因为从按钮单击事件调用的async
方法有效。
>事件处理程序应async void
。这是为数不多的几个你会async void
而不是async Task
的地方之一