PDA

View Full Version : نمایش پیغام در حال اجرا



miladkj
سه شنبه 06 مرداد 1394, 21:55 عصر
سلام به همه دوستان عزیز
من توی برنامم میخوام گزارشگیری رو انجام بدم و زمانی که روی کلید گزارشگیری کلیک میکنم چند ثانیه طول میکشه بعد گزارش مربوطه رو نشون میده. حالا میخوام بجای اون چند ثانیه ای ک گزارش رو تولید میکنه به کاربر یه پیغام نشون بده(یا مثلا یک شکل برای لودینگ نشون بده و بگه لطفا کمی صبر کنید)
باتشکر

ebrahim.rayatparvar
سه شنبه 06 مرداد 1394, 21:58 عصر
سلام مهندس جان
بهتره یه فرم لودینگ برای خودت درست کنی و با معقوله threading این عملیات رو انجام بدی.

miladkj
سه شنبه 06 مرداد 1394, 22:05 عصر
من مشکلی از ساختن همچین فرم لودینگی ندارم من فقط مشکلم اینه ک چطوره این فرم لودینگ که دارم میسازم رو توی اون بازه ی زمانی ک برنامه هیچی نمایش نمیده و گزارش رو آماده میکنه، نشون بدم؟
یعنی میخوام این فرم لودینگی که میگی رو فقط توی اون چند ثانیه نشون بده و وقتی گزارش آماده شد این صفحه لودینگ هم زودی بره؟

ghasem110deh
سه شنبه 06 مرداد 1394, 23:34 عصر
سلام
به فرمایش آقا ابراهیم عزیز دقت نکردی !
یه فرم انتظار با نخ ایجاد میکنی ، و توی رویداد باتون مربوط به گزارش میزاری ... قبل اجرای دستورات مربوط به لود گزارش فرم انتظار نمایش داده میده و پس از لود شدن پنجره گزارش فرم انتظار بسته میشه !

مثل این :

http://barnamenevis.org/attachment.php?attachmentid=132438&stc=1&d=1434805148

اینجا وقتی داره از دیتابیس بکاپ میگیره این فرم رو نشون میده و وقتی بکاپ گرفته ... بلافاصله فرم انتظار بسته میشه !

behzadkhan
چهارشنبه 07 مرداد 1394, 00:02 صبح
با سلام

دوست عزیز

من قبلا به این مشکل بر خوردم:


private void frmShowReport_Load(object Sender, EventArgs e)
{
frmLoading frm = new frmLoading()
frm.Show();

this.Enabled = false;

// اینجا کد تولید گزارش را قرار بده

frm.Close();

this.Enable = true;
}



این یک کد هست که کلا می گه که قبل از انجام کاری که زمان بر هست فرم لودینگ را نمایش بده و اون فرمی که داره عملیات را انجام می ده را غیر فعال کن.

بعد کد علمیات اجرا می شه اما فرم لودینگ در صفحه است.

در زمانی که عملیات تمام می شود فرم لودینگ را ببند.
و

فرم اصلی را فعال کن.

اگر ما فرم لودینگ را ShowDialog می کردیم دیگر ادامه کد تا بستن فرم ادامه پیدا نمی کرد. به خاطر همین مجبوریم فرم اصلی که داره عملیات را انجام می دهد غیر فعال کنیم.

این روش برای زمانی هست که کار Thread سخت هست یا امکانپذیر نیست.

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

با تشکر

ebrahim.rayatparvar
چهارشنبه 07 مرداد 1394, 10:52 صبح
سلام مهندس جان.
شما تو سایت یه سرچی بزنین تو همین انجمن میبینید تو معقوله ترید ها خیلی چیزها کفته شده. اینجور که من متوجه شدم شدم کار ترید رو خوب درک نکردی اصلا قصد توهین ندارم بد برداشت نکنید.
کار ترید همنه که در یک آن چند عمل رو انجام بدی البته در یک آن رو نشون میده ولی به صورت داره رو پروسس های خودش جابجا میشه و همه رو اجرا میکنه چون شما در برنامه دارید از 1 ترید اصلی برنامه استفاده میکنید نمیشه فهمید به چه صورت میشه این کار رو کرد البته behzadkhan (http://barnamenevis.org/member.php?244640-behzadkhan) یه قطعه کد برای شما گذاشتن که به درستی کار میکنه ولی عاقلانه نیست به این صورت کار کرد. البته این هم بگم wating کامپوننت devexpress رو به همین روش که behzadkhan (http://barnamenevis.org/member.php?244640-behzadkhan) گفتند استفاده میکنند که خوب هم جواب میده.

behzadkhan
چهارشنبه 07 مرداد 1394, 11:04 صبح
سلام مهندس جان.
شما تو سایت یه سرچی بزنین تو همین انجمن میبینید تو معقوله ترید ها خیلی چیزها کفته شده. اینجور که من متوجه شدم شدم کار ترید رو خوب درک نکردی اصلا قصد توهین ندارم بد برداشت نکنید.
کار ترید همنه که در یک آن چند عمل رو انجام بدی البته در یک آن رو نشون میده ولی به صورت داره رو پروسس های خودش جابجا میشه و همه رو اجرا میکنه چون شما در برنامه دارید از 1 ترید اصلی برنامه استفاده میکنید نمیشه فهمید به چه صورت میشه این کار رو کرد البته behzadkhan (http://barnamenevis.org/member.php?244640-behzadkhan) یه قطعه کد برای شما گذاشتن که به درستی کار میکنه ولی عاقلانه نیست به این صورت کار کرد. البته این هم بگم wating کامپوننت devexpress رو به همین روش که behzadkhan (http://barnamenevis.org/member.php?244640-behzadkhan) گفتند استفاده میکنند که خوب هم جواب میده.

با سلام

دوست عزیز

احتمالا من منظورم را بد توضیح دادم.

من فقط می خواستم روشی را که از thread استفاده نمی کند توضیح بدهم.

در کل مواقعی وجود دارد که فقط می توان از threadها برای حل مسائل استفاده کرد.

پس خیالتون راحت باشه که ما مخلص threadهم هستیم.

================================================== ===========

راستی من برای حل همین مشکلی یک جا از thread استفاده کردم اما با وجود اینکه از ShowDialog استفاده کرده بودم فرم زیرینم غیر فعال نشد و مجبور شدم که Enable فرم زیرین را false کنم.

البته علتش هم مشخص هست چون من درون thread فرم را ShowDialog کردم.


آیا شما توانسته اید این مشکل را به غیر false کردن Enable فرم زیرین برطرف کنید؟

با تشکر