PDA

View Full Version : حرفه ای: دسترسی به کنترل های فرم از طریق متدهای async Task



رامین مرادی
چهارشنبه 16 اسفند 1396, 15:02 عصر
سلام وقت بخیر دوستان.
متدی داریم که به صورت async Task نوشته شده مثال زیر



public async Task Runtest()
{
try
{
int a=2+4;
}
}




چجوری میشه مقدار a رو ریخت داخل یک تکست باکس؟:متفکر:

ژیار رحیمی
چهارشنبه 16 اسفند 1396, 17:01 عصر
//روش اول
private async void LoadAsync()
{
var res = await Task.Run(() =>
{
return 2+4;
});
label1.Text = res.ToString();
}
//روش دوم
private async void LoadAsync()
{
await Task.Run(() =>
{
var a=5+8;
if (IsHandleCreated)
label1.Invoke((MethodInvoker) delegate
{
label1.Text = a.ToString();
});
});
}

رامین مرادی
پنج شنبه 17 اسفند 1396, 08:19 صبح
//روش اول
private async void LoadAsync()
{
var res = await Task.Run(() =>
{
return 2+4;
});
label1.Text = res.ToString();
}


ممنون دوست عزیز . روش اول که کلا لیبل رو نشناخت از این روش استفاده کردم .چون داخل تابع چند جا این تکست باید پر میسد اومدم تبدیل به تابع کردم. به این صورت. امیدوارم برا بقیه هم کاربرد داشته باشه.



private void setText(string txt)
{
if (textBox1.InvokeRequired)
{
textBox1.Invoke(new Action(() => textBox1.AppendText(txt)))
; return;
}
textBox1.Text = txt;
}