اگر برنامه شما تحت ویندوز و تک کاربره هست نیاز انچنانی به پیاده سازی متدهای async await نیست و میتونید کارهای طولانی مدت رو با backgrounworker پیاده کنید
ولی
return Task.Run(() =>
برای برنامه های تحت ویندوز میتوان استفاده کرد اما در سطح وب بکار نبرید این متدها به متدهای تقلبی یا Fake Async مشهور هستند
public async Task<DataTable> MyMetod()
{
return await Task.Run(() =>
{
return myvalues;
});
}
private async void _Click(object sender, EventArgs e)
{
await Task.Run(() => MyMetod());
}