如何实现同时支持同步/异步调用的一种方法?

我有一个 button_click 事件。如果异步模式为ON,则支持两种方法。

因此,例如有 Update()方法是同步版本

UpdateAsync()方法是异步版本。

现在,让我们看到一个 btnEdit_Click ,如果 IsAsynchronous 选项Boolean为ON,它将调用 Update()

 internal async void BtnEdit_ItemClick(object sender,ItemClickEventArgs e)
 {  
       if (IsAsynchronousMode)
          await crud.UpdateAsync(crud.DataBuffer);
       else
         crud.Update();
 }

现在我所做的是真的吗?使方法可以同时支持同步/异步?或这个反模式。但我假设默认情况下C#事件是同步的。所以我在主要方法中放入了async关键字。

还可以很好地实现 UpdateAsync()的实现。它会调用 ADO.NET 等待ExecuteNonQueryAsync()

很抱歉如此,需要在一个方法中同时支持两个调用。还是我应该遵循哪种更好的方法?

bojing521 回答:如何实现同时支持同步/异步调用的一种方法?

将方法标记为异步只是意味着该方法将在实现中的某个地方等待。如果方法是异步的,则不必强制返回Task,而必须至少等待一次。 如果要使该方法可等待,则仅应返回Task。 我个人有这样的方法:

public async void Button_Click(object sender,EventArgs e);

因此,回答您的问题,是的,您所做的是正确的,该方法仅在到达时才是异步的

await crud.UpdateAsync(crud.DataBuffer);

否则,即使它具有async关键字,它也是同步的。 我不明白为什么您可以进行异步通话时为什么要进行同步通话

本文链接:https://www.f2er.com/3150824.html

大家都在问