View Full Version : سوال: await چیست و چگونه باید ازش استفاده کرد ؟!
  
drsina
سه شنبه 31 تیر 1393, 12:48 عصر
دوستان تا اونجا که من میدونم ، await برای متد های async استفاده میشه ! حالا باید یه کاری توو مایه های همگام سازی انجام بده .
دوستان اگر توضیحی ، مقاله ای ، یا مثالی دارند ، بگند :لبخند:
pedram.11
سه شنبه 31 تیر 1393, 12:54 عصر
سلام و درود
await نیست wait هست. بله برای به هنگام سازی در برنامه هایی که از multi threading استفاده میشه به کار میره. یه نمونه:
object lockObj=new object();
object _x;
object x
{
   get{
      lock(lockObj){
         if(_x == null) Monitor.Wait(lockObj);
         return _x;
      }
   }
   set{
      lock(lockObj){
         _x=value;
         if(value != null) Monitor.PulseAll(lockObj);
      }
   }
}
این نمونه موقع دریافت x اگر x تهی بود صبر میکنه تا وقتی که پر شه و بعد مقدار رو برمیگردونه
drsina
سه شنبه 31 تیر 1393, 13:11 عصر
ممنون ولی این مثال من await دیدم . 
 var resault = await webClient.UploadFileTaskAsync(new Uri(), );
pedram.11
سه شنبه 31 تیر 1393, 13:26 عصر
بله این کلید یادم نبود تابحال ازش استفاده نکردم، اینم برای به هنگام سازی در متد هاست که از کلید await موقع فراخوانی متد و async موقع تعریف متد استفاده میشه
dalvand
سه شنبه 20 مرداد 1394, 23:40 عصر
private async void button1_Click(object sender, EventArgs e)
{
     string result = await WaitAsynchronouslyAsync();
     textBox1.Text += result;
}
public async Task<string> WaitAsynchronouslyAsync()
{
     await Task.Delay(1000);
     return "Finished";
}
یک نمونه ساده از طریقه استفاده اونه ولی ..مفهوم کلی کاربرد اون در فراخوانی و اجرای کارها task های غیر همزمان
تمامی دستورات در توابع async تا رسیدن به await اجرا میشوند و با رسیدن به await دستورات آن اجرا و سپس به ادامه اجرا دستورات داخل تابع برمیگردد.
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.