50٪ تخفیف روی تمام دوره‌ها!
پایان تخفیف تا:
مشاهده دوره‌ها
0

نمایش فرم با استفاده از Thread در سی شارپ

سلام دوستان وقتتون بخیر ، دوستان من با استفاده از دستور زیر یک فرم رو فراخوانی می کنم ولی برای یک لحظه فرم ظاهر میشه و سپس مخفی میشه ممنون میشم راهنمایی کنید.

private void button1_Click(object sender, EventArgs e)
        {
            System.Threading.ThreadStart ts = new System.Threading.ThreadStart(start);
            System.Threading.Thread td = new System.Threading.Thread(ts);
            td.Start();
        }
        private void start()
        {
            Form2 frm = new WindowsFormsApplication70.Form2();
            frm.Show();
        }
پرسیده شده در 1395/05/28 توسط

1 پاسخ

2

سلام دوست عزیز، شما داخل سی شارپ نمیتونید به صورت عادی فرمتون رو تو یک Thread جداگانه نمایش بدید، دلیل این موضوع هم به خاطر وجود Message Loop ای هست که تو Thread اصلی وجود داره و میتونه پیام های Windows رو پردازش کنه. اگر قراره کاری انجام بشه و فرم نمایش داده بشه، می تونید از متد BeginInvoke در کلاس Control استفاده کنید، چون این متد تو کلاس Control تعریف شده و Form هم از کلاس Control مشتق شده، به صورت زیر می تونید کدتون رو تغییر بدید:

this.BeginInvoke((Action)delegate {

        var form = new Form2();
        form.Show();
    });
پاسخ در 1395/05/28 توسط

پاسخ شما