سلام به همه
من در فرم لود برنامه خودم همچین کدی رو زدم
private async void Form1_Load(object sender, EventArgs e)
{
await Task.Run(() =>
{
Phone_dbEntities phone_DbEntities = new Phone_dbEntities();
dataGridViewX1.DataSource = phone_DbEntities.Shomares.ToList();
}
که با خطا مواجه شدم
Name | Value | Type | |
---|---|---|---|
Message | "Cross-thread operation not valid: Control 'dataGridViewX1' accessed from a thread other than the thread it was created on." | string |
و کد رو به این تغیر دادم
private async void Form1_Load(object sender, EventArgs e)
{
await Task.Run(() =>
{
Phone_dbEntities phone_DbEntities = new Phone_dbEntities();
dataGridViewX1.Invoke(new Action(() => { dataGridViewX1.DataSource = phone_DbEntities.Shomares.ToList(); }));
});
}
خطا بر طرف شد منتها تا زمانی که اطلاعات رو از دیتابیس بخونه و نمایش بده فرم قفل می شه و دقیقا مثل حالتی میشه که از async , await استفاده نکنی آیا این درسته یا من اشتباه نوشتم ممنون میشم راهنماییم کنید با تشکر
سلام
برای اینکار در ویندوز فرم بهتره از background worker استفاده کنید