نمایش نتایج 1 تا 23 از 23

نام تاپیک: اجرای همزمان 2 فرم

  1. #1
    کاربر دائمی
    تاریخ عضویت
    تیر 1390
    محل زندگی
    کرمانشاه
    پست
    1,487

    اجرای همزمان 2 فرم

    سلام .

    من نیاز دارم که 2 فرم رو همزمان اجرا کنم ،

    ما Form1 رو دارم و Form2 . من می خواهم هر 2 تا فرم همزمان اجرا بشوند ، اما اول Form1 نمایش داده بشه و بعد از 10 ثانیه Form1 بسته بشه و Form2 نمایش داده بشه .

    هدف من این هست که اون پروسس و مراحلی که Form2 نیاز داره که CPU بگیره و یکسری کار دیگه رو انجام بدیم که زمان کمتری صرف بشه ، در عین حال یک فرم داریم که در قالب SPLASH خواهد بود .

    آیا این کار درست هست و بهینه ؟ اگه نه لطفا روش دیگری بفرمایید .

    در واقع اگه دیده باشید ، نرم افزار ها مثل Photoshop و یا Microsoft Word همچین چیزی دارند که میاد یک صفحه نمایشی و زیبا دارند که Loading داره و بعد از اتمام لودینگ برنامه اجرا میشه ، این طوری کاربر خسته نمیشه و مطمئن هست که نرم افزار رو اجرا کرده .

    ممنون میشم کمک کنید

  2. #2

    نقل قول: اجرای همزمان 2 فرم

    سلام
    باید از کلاس ApplicationContext استفاده کنید.
    لینک خود سایت: https://barnamenevis.org/showthread.p...icationContext
    لینک مایکروسافت: http://msdn.microsoft.com/en-us/libr...oncontext.aspx

  3. #3
    کاربر دائمی
    تاریخ عضویت
    تیر 1390
    محل زندگی
    کرمانشاه
    پست
    1,487

    نقل قول: اجرای همزمان 2 فرم

    نقل قول نوشته شده توسط tooraj_azizi_1035 مشاهده تاپیک
    سلام
    باید از کلاس ApplicationContext استفاده کنید.
    لینک خود سایت: https://barnamenevis.org/showthread.p...icationContext
    لینک مایکروسافت: http://msdn.microsoft.com/en-us/libr...oncontext.aspx
    خیلی سخته :D .

    باید امشب تا صبح نخوابم ببینم این چیه ! :D مرسی عزیزم !

  4. #4
    کاربر دائمی
    تاریخ عضویت
    تیر 1390
    محل زندگی
    کرمانشاه
    پست
    1,487

    نقل قول: اجرای همزمان 2 فرم

    کد ساده تری نداری ؟ :D ما مخمون در این حد نیست

  5. #5

    نقل قول: اجرای همزمان 2 فرم

    کجاشو نمی فهمی؟
    راهی به جز استفاده از این کلاس نیست.

  6. #6
    کاربر دائمی آواتار hunter_ara
    تاریخ عضویت
    تیر 1390
    محل زندگی
    تهران-قلهک
    پست
    136

    نقل قول: اجرای همزمان 2 فرم

    نقل قول نوشته شده توسط dev-dev-dev مشاهده تاپیک
    کد ساده تری نداری ؟ :D ما مخمون در این حد نیست
    اینجا رو ببینید

  7. #7
    کاربر تازه وارد آواتار en.reza
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    تالش
    سن
    33
    پست
    69

    نقل قول: اجرای همزمان 2 فرم

    سلام
    توی فایل Program تغییرات رو انجام بده

    Application.Run(new From1());
    Application.Run(new From2());

  8. #8
    کاربر دائمی
    تاریخ عضویت
    تیر 1390
    محل زندگی
    کرمانشاه
    پست
    1,487

    نقل قول: اجرای همزمان 2 فرم

    نقل قول نوشته شده توسط en.reza مشاهده تاپیک
    سلام
    توی فایل Program تغییرات رو انجام بده

    Application.Run(new From1());
    Application.Run(new From2());
    این کار میاد From1 رو اجرا می کنه و بعد هم Form2 . اما این 2 تا فرم نباید همزمان نمایش داده بشوند . قابلیت HIDING لازم هست .

  9. #9
    کاربر تازه وارد آواتار en.reza
    تاریخ عضویت
    بهمن 1389
    محل زندگی
    تالش
    سن
    33
    پست
    69

    نقل قول: اجرای همزمان 2 فرم

    منظورت رو دقیق بگو
    گفته بودی اجرای همزمان 2 فرم، خب این دستورات هم دوتا فرم رو با هم اجرا میکنه
    اگه هم می خواهی بینشون وقفه بذار که بحث جداست

  10. #10

    نقل قول: اجرای همزمان 2 فرم

    منظورشو دقیق گفت.

    کجای کد لینکی که گذاشتم مبهمه؟؟؟؟؟؟؟؟؟؟؟؟؟

  11. #11
    کاربر جدید آواتار Miladkt.S.A.o
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    اصفهان
    پست
    19

    Talking نقل قول: اجرای همزمان 2 فرم

    دوس عزیز سلام
    کار ساده ای است
    کافی است که در form1
    یک تایمر ایجاد کنیدو خاصیت Enable
    ان را true کرده و در interval ان عدد 100
    را وارد کنید
    سپس روی ایکن تایمر که در صفحه ایجاد میشود دبل کلیک کنید
    در این صورت قسمت timer1_Tick باز میشود و در انجا کافی است وارد کنید
    Form2 frm_obj=new Form2();
    this.Hide();
    frm_obj.showDialog();
    this.Close();
    timer1.Enabeld=false;


    موفق باشید

  12. #12

    نقل قول: اجرای همزمان 2 فرم

    جناب Miladkt.S.A.o

    this.Close باعث میشه برنامه کلاً بسته بشه و Thread جاری کارش رو تموم می کنه و کنترل به سیستم عامل داده می شه.
    مایکروسافت کلاس ApplicationContext رو برای همین منظور (نمایش چندین فرم) در دات نت اضافه کرده. نمی دونم چرا دوستی که سوال کرد کدی که گذاشتم روی آزمایش نمی کنه و حتی نمی گه کجای این کد براش مبهمه!

  13. #13
    کاربر جدید آواتار Miladkt.S.A.o
    تاریخ عضویت
    بهمن 1390
    محل زندگی
    اصفهان
    پست
    19

    نقل قول: اجرای همزمان 2 فرم

    نقل قول نوشته شده توسط tooraj_azizi_1035 مشاهده تاپیک
    جناب Miladkt.S.A.o

    this.Close باعث میشه برنامه کلاً بسته بشه و Thread جاری کارش رو تموم می کنه و کنترل به سیستم عامل داده می شه.
    مایکروسافت کلاس ApplicationContext رو برای همین منظور (نمایش چندین فرم) در دات نت اضافه کرده. نمی دونم چرا دوستی که سوال کرد کدی که گذاشتم روی آزمایش نمی کنه و حتی نمی گه کجای این کد براش مبهمه!

    سلام دوست عزیزم
    شما بالای کد را مگر نخواندید!
    ابتدا کد hide می شود
    سپس فرم جدید باز شده و
    بعد فرم قبلی closeمی شود
    من خودم این کد را بارها و بارها اجرا کرده ام.

  14. #14

    نقل قول: اجرای همزمان 2 فرم

    به نظرم سوال خیلی راحتی پرسیدی در کافیست از یک کنترل تایمر استفاده کنیم (خاصیت interval را برابر 1000 که نماد ثانیه است و خاصیت Enable این کنترل را برابر true قرار میدهیم) و کافیست کد زیر را هم در رویداد Tick کنترل تایمر تایپ کنیم .


    int numstop = 0;
    private void timer1_Tick(object sender, EventArgs e)
    {
    Form2 f = new Form2();
    numstop++;


    if (numstop == 11)
    {
    timer1.Enabled = false;
    }


    if (numstop == 10)
    {

    f.Show();
    }
    }

  15. #15

    نقل قول: اجرای همزمان 2 فرم

    سوال راحتی است کافیست ابتدا یک کنترل تایمر به فرم اضافه کنید و خاصیت Enable آن را به true تغییر دهید .در نهایت در رویداد Tick این کنترل کد زیر را بنویسی .

    int numstop = 0;
    private void timer1_Tick(object sender, EventArgs e)
    {
    Form2 f = new Form2();
    numstop++;


    if (numstop == 11)
    {
    timer1.Enabled = false;
    }


    if (numstop == 10)
    {

    f.Show();
    }
    }



  16. #16

    نقل قول: اجرای همزمان 2 فرم

    کافیست در فرمی که به عنوان شروع باید نمایش دهید ابتدا یک کنترل progressbar و یک کنترل تایمر اضافه می کنیم خاصیت Enable تایمر را برابر true قرار میدهید و در رویداد tick این کد ا وارد میکنیم .

    private void timer1_Tick(object sender, EventArgs e)
    {
    Form2 f = new Form2();
    if (progressBar1.Value < 100)
    progressBar1.Value += 10;
    else
    {
    this.Hide();
    this.Close();
    timer1.Enabled = false;
    f.ShowDialog();


    }
    }

    و یا از

    private void timer1_Tick(object sender, EventArgs e)
    {
    Form2 f = new Form2();
    if (progressBar1.Value < 100)
    progressBar1.Value += 10;
    else
    {

    this.Close();
    timer1.Enabled = false;
    f.ShowDialog();


    }
    }

  17. #17
    کاربر دائمی
    تاریخ عضویت
    تیر 1390
    محل زندگی
    کرمانشاه
    پست
    1,487

    نقل قول: اجرای همزمان 2 فرم

    سلام . آقا / خانم harani عزیز کد شما رو تست کردم و مشکلی نبود . در ضمن اون this.close() کل برنامه رو می بنده ، اما از HIDE استفاده کردم و مشکل حل شد . فکر نکنم مشکلی باشه با HIDE ، از لحاظ بهینه سازی هم اطلاع ندارم .
    هدف من این هست که اون پروسس و مراحلی که Form2 نیاز داره که CPU بگیره و یکسری کار دیگه رو انجام بدیم که زمان کمتری صرف بشه ، در عین حال یک فرم داریم که در قالب SPLASH خواهد بود .

    آیا این کار درست هست و بهینه ؟ اگه نه لطفا روش دیگری بفرمایید .

    در واقع اگه دیده باشید ، نرم افزار ها مثل Photoshop و یا Microsoft Word همچین چیزی دارند که میاد یک صفحه نمایشی و زیبا دارند که Loading داره و بعد از اتمام لودینگ برنامه اجرا میشه ، این طوری کاربر خسته نمیشه و مطمئن هست که نرم افزار رو اجرا کرده .
    همون طور که بالا تر گفتم کد شما مشکلی نداشت ، اما خواسته های من رو برآورده نمی کنه . ببینید زمانی که Form1 بعد از مدت مثلا 10 ثانیه HIDE میشه ، تازه Form2 شروع به باز شدن می کنه کدهاش رو اجرا می کنه . از اونجا که ما می خواهیم FORM2 بدون وقفه و هیچ کندی اجرا بشه ، فکر می کنم که با همزمان سازی و یا Parallel باید Form2 رو همزمان با Form1 اجرا کرد که کدهاش و پروسس ها و فرآیند ها و.... اجرا بشوند و CPU بگیرند و زمانی که نیاز داره رو سپری کنه .

    اینجا با Timer فقط یک وقفه بین اجرای فرم ها پیش آمده ، اما از زمان اجرای Form2 کسر نشده است .

    به زبان بهتر 2 کار باید انجام داد .

    1- محاسبه و دریافت کردن زمان مورد نیاز اجرای کامل Form2 .
    2- اجرای Form1 و Form2 به صورت همزمان ، به صورتی که Form2 نمایش داده نشود ، اما در خفا و در مخفیانه کدهاش اجرا بشه .
    3- بعد از گذشت زمان مورد اول - مورد 1 . __ Form2 اجرا شود .

    دقیقا مثل نرم افزار PhotShop , Microsoft Word , Excel و ...

    امیدوارم منظورم رو رسانده باشم .

    ( از همکاری همه دوستان ، نهایت تشکر را دارم . مرسی )

  18. #18
    کاربر دائمی
    تاریخ عضویت
    تیر 1390
    محل زندگی
    کرمانشاه
    پست
    1,487

    نقل قول: اجرای همزمان 2 فرم

    خبری نشد ؟ کسی بلد نبود ؟

    دوستان عزیز در قبال پرداخت هزینه ، اگر کسی بلد هست بگه . من پرداخت می کنم

  19. #19
    کاربر جدید آواتار mahdi.akbari
    تاریخ عضویت
    مهر 1390
    محل زندگی
    شیراز
    پست
    14

    نقل قول: اجرای همزمان 2 فرم

    سلا داداش
    من یه نفرو می شناسم می تونه مشکلت رو حل کنه
    الان هم آنلاینه بهش پی ام بده
    vahid_music6@yahoo.com

  20. #20

    نقل قول: اجرای همزمان 2 فرم

    ببینید فرم Splash به خاطر نمایش روند شروع اجرای برنامه است. مثلاً ابتدا فونت ها لود می شوند بعد برخی سخت افزارها چک می شوند که این عملیات به شکل پیامی در فرم Splash ظاهر می شود که پس از اتمام موفقیت آمیز مراحل ابتدایی اجرای برنامه تازه فرم اصلی به نمایش در می آید.
    اگر شما فقط از فرم Splash برای نمایش لوگوی برنامه و مکث چند ثانیه ای و بعد نمایش فرم اصلی استفاده می کنید که جواب داده شد اما در صورتی که قرار است عملیات خاصی را در هنگام شروع اجرای برنامه نیز انجام دهید و بعد از آن فرم اصلی را نمایش دهید باید از برنامه نویسی ناهمگام (Asynchronous) استفاده کنید.

    برای این منظور باید از متد Control.BeginInvoke استفاده نمائید.

    عملیات Strartup برنامه را در یک متد قرار می دهیم.
    در انتهای عملیات کد مخفی کردن یا بستن فرم Splash را می نویسیم.

    در خط بعد خطی از برنامه که فرم Splash به نمایش در می آید این متد را اجرا می کنیم:
    SplashForm.BeginInvoke(MethodName)

    البته مطالب بالا فقط در حد ایجاد ذهنیت در شما بود. نظرتان را بگوئید.

  21. #21
    کاربر جدید آواتار mahdi.akbari
    تاریخ عضویت
    مهر 1390
    محل زندگی
    شیراز
    پست
    14

    نقل قول: اجرای همزمان 2 فرم

    به نظر من می بایستی در رویداد لود فرم 1 ، رویداد لود فرم 2 را به این صورت هندل کنید
      private void Form1_Load(object sender, EventArgs e)
    {

    f2.Load += new EventHandler(Form2_Load);
    }

    void Form2_Load(object sender, EventArgs e)
    {
    f2.Text = "hello";
    }

    و سپس یک تایمر هم در فرم 1 به این صورت قرار دهید
    private void timer1_Tick(object sender, EventArgs e)
    {
    if (progressBar1.Value < 100)
    progressBar1.Value += 10;
    else
    {
    this.Hide();
    timer1.Enabled = false;
    f2.ShowDialog();
    }

  22. #22

    نقل قول: اجرای همزمان 2 فرم

    سلام
    این هم پروژه.
    فایل های ضمیمه فایل های ضمیمه

  23. #23
    کاربر دائمی
    تاریخ عضویت
    تیر 1390
    محل زندگی
    کرمانشاه
    پست
    1,487

    نقل قول: اجرای همزمان 2 فرم

    نقل قول نوشته شده توسط tooraj_azizi_1035 مشاهده تاپیک
    سلام
    این هم پروژه.
    مرسی عزیزم . لطف بسیار کردی . همون طور که گفتم از قفل سخت افزاری استفاده می کنم . الان هم قفل سخت افزاریم در بیمارستان هست

    یک راهنمایی بکن ، اون کد هام رو کجای این پروژه شما باید باشه که فردا برم بیمارستان و تست کنم

تاپیک های مشابه

  1. اجرای همزمان دو دستور
    نوشته شده توسط maryam_jamshid در بخش SQL Server
    پاسخ: 7
    آخرین پست: یک شنبه 13 آبان 1386, 07:44 صبح
  2. چگونگی اجرای همزمان یک Query
    نوشته شده توسط probit در بخش SQL Server
    پاسخ: 1
    آخرین پست: دوشنبه 30 مهر 1386, 20:11 عصر
  3. اجرای همزمان دو تابع
    نوشته شده توسط amir_civil در بخش برنامه نویسی با زبان C و ++C
    پاسخ: 4
    آخرین پست: پنج شنبه 11 مرداد 1386, 11:54 صبح
  4. جلوگیری از اجرای همزمان یک برنامه
    نوشته شده توسط SReza1 در بخش برنامه نویسی در Delphi
    پاسخ: 7
    آخرین پست: یک شنبه 18 آبان 1382, 08:57 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •