PDA

View Full Version : سوال: await چیست و چگونه باید ازش استفاده کرد ؟!



drsina
سه شنبه 31 تیر 1393, 11:48 صبح
دوستان تا اونجا که من میدونم ، await برای متد های async استفاده میشه ! حالا باید یه کاری توو مایه های همگام سازی انجام بده .

دوستان اگر توضیحی ، مقاله ای ، یا مثالی دارند ، بگند :لبخند:

pedram.11
سه شنبه 31 تیر 1393, 11: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, 12:11 عصر
ممنون ولی این مثال من await دیدم .

var resault = await webClient.UploadFileTaskAsync(new Uri(), );

pedram.11
سه شنبه 31 تیر 1393, 12:26 عصر
بله این کلید یادم نبود تابحال ازش استفاده نکردم، اینم برای به هنگام سازی در متد هاست که از کلید await موقع فراخوانی متد و async موقع تعریف متد استفاده میشه

dalvand
سه شنبه 20 مرداد 1394, 22: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 دستورات آن اجرا و سپس به ادامه اجرا دستورات داخل تابع برمی‌گردد.