اگر برنامه شما تحت ویندوز و تک کاربره هست نیاز انچنانی به پیاده سازی متدهای 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());
}