PDA

View Full Version : استفاده از async و await



mehdininja
چهارشنبه 19 بهمن 1401, 18:24 عصر
سلام دوستان لطفا بفرمایید ایا من به صورت صحیح از کد await استفاده کردم ؟


private async void btnSendSms_Click(object sender, RoutedEventArgs e)
{

try
{

WebRequest request = WebRequest.Create("http://test.com/services.jspd");
string[] rcpts = listbox1.Items.OfType<string>().ToArray();
string json = JsonConvert.SerializeObject(rcpts);
request.Method = "POST";
string postData = "op=send&uname=test&pass=test&message=" + txtSMS.Text + "&to=" + json + "&from=" + cmbNumbers.Text;
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = await request.GetRequestStreamAsync();
await dataStream.WriteAsync(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = await request.GetResponseAsync();
dataStream = response.GetResponseStream();
dataStream.Close();
response.Close();


}
catch
{

}

}

bitasoft.ir
یک شنبه 19 شهریور 1402, 01:43 صبح
بله، به نظر می‌رسد که از کلیدواژه await به درستی استفاده کرده‌اید. در این کد، شما از await برای انجام عملیات همزمان و غیرهمزمان استفاده می‌کنید، که به صورت صحیح است. این کلیدواژه به برنامه اجازه می‌دهد که منتظر اتمام عملیات‌های آسنکرون وب (مانند درخواست HTTP) باشد و بدون بلاک کردن اجرای برنامه ادامه پیدا کند.


از آنجا که شما در اینجا از await در توابع async برای انجام کارهای I/O-bound استفاده می‌کنید (مانند ارسال درخواست HTTP)، این نیز بهینه‌سازی مهمی است تا اطمینان حاصل شود که رابط کاربری برنامه توسط عملیات‌های آسنکرونی بلاک نشود و به طور پیشرفته به این عملیات‌ها واکنش نشان دهد. از این به بعد، می‌توانید از کلیدواژه await برای همگام‌سازی عملیات‌های آسنکرونی در برنامه‌های خود استفاده کنید.



سلام دوستان لطفا بفرمایید ایا من به صورت صحیح از کد await استفاده کردم ؟


private async void btnSendSms_Click(object sender, RoutedEventArgs e)
{

try
{

WebRequest request = WebRequest.Create("http://test.com/services.jspd");
string[] rcpts = listbox1.Items.OfType<string>().ToArray();
string json = JsonConvert.SerializeObject(rcpts);
request.Method = "POST";
string postData = "op=send&uname=test&pass=test&message=" + txtSMS.Text + "&to=" + json + "&from=" + cmbNumbers.Text;
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteArray.Length;
Stream dataStream = await request.GetRequestStreamAsync();
await dataStream.WriteAsync(byteArray, 0, byteArray.Length);
dataStream.Close();
WebResponse response = await request.GetResponseAsync();
dataStream = response.GetResponseStream();
dataStream.Close();
response.Close();


}
catch
{

}

}