dr_jacky_2005
یک شنبه 28 شهریور 1389, 10:30 صبح
آقا نگین سرچ کنا.
من کردم
پیدام کردم
ولی یا به کارم نیمده
یا ارور میداده.
من یک فرم 2 لودینگ دارم.
یک فرم 1 دیگر هم دارم که تووش درخته و این درخته توسط تابع مثلا ایکس پر میشه.
تابع ایکس در لود فرم 1 است.(هنگ بودن سیستم هم همینجاست).
(در مجموع بگم که پر شدن درخت در هنگام بالا اومدن فرم 1 باید انجام بشه)
حالا میخوام فرم 1 که داره لود میشه و درخت پر میشه،لودینگ نمایش بده.
فقط یک مسئله که میخوام حداقل 2 ثانیه لودینگ نمایش داده بشه،حتی اگر نیاز نبود.
اگرم که نیازه که به اندازه نیازش لودینگ رو نمایش بده.
(البته اگه اینم نشد،مشکلی نیس،فقط لود بیاد و بره به اندازه)
در آخرم این فرم 2 لودینگ بسته بشه.
من میدونم که با اینا باید کار کرد ولی یا ارور میده یا نمیشه:
Invoke
Thread
BackgroundWorker
Delegate
Timer
لطفا کامل توضیح بدین دوستان:ناراحت:
_____________________
مشکل اینجاست که من تابع پر کردن درختام(تابع ایکس) توو لود فرم 1 است.
وقتی اون تابع رو میام میزارم توو DoWork این ارور میاد:
Cross-thread operation not valid: Control 'TrvCoding' accessed from a thread other than the thread it was created on.
TrvCoding هم اسم درخته.
واسه همین میام این رو میزارم بالا سر تابه ایکس:
CheckForIllegalCrossThreadCalls = false;
بعد این ارور رو توو DoWork میده:
Action being performed on this control is being called from the wrong thread. Marshal to the correct thread using Control.Invoke or Control.BeginInvoke to perform this action.
(آخه اومدم تابع ایکس رو گذاشتم توو DroWork . نذارمم که اصلا سودی نداره و لودینگی نمیشه!)
بعد واسه رفع این ارور ، این ایـــــــــف رو میذارم:
if (TrvCoding.InvokeRequired == false)
{
TvfCoding.LoadTreeFullData();
}
ولی باز لودینگی نمیبینم.
یعنی هستا ولی 1 میلیونم ثانیه.
اصلا میگیم اینا که من گفتم کار کنه،
من میخوام حداقل 2 ثانیه لودینگ بده.
چرا false?
چون اگه true باشه،
Cross-thread operation not valid: Control 'TrvCoding' accessed from a thread other than the thread it was created on.
میاد!!!
حقم داره ، چون داره توو لود فرم 1 ، تابع ایکس یک بار میاد.
البته این خط رو هم کامنت کردم ولی در مجموع کار نمیکنه!
حالا چطور من تابه DoWork رو توو لودینگ فرم 1 بیارم؟آیا راه اینه؟اگه آره،مشکل توو این قسمته:
backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
و
private void form1_Load(object sender, EventArgs e)
که نوع E یکی نیس!
Cast هم نمیشه.ارور میده.
آگه راه هم این نیس، راه لطفا
_____
هرچی مثال توو نت است،اومدن عملیاتشون رو توو دگمه نوشتن.
ولی مال من توو لود است
من کردم
پیدام کردم
ولی یا به کارم نیمده
یا ارور میداده.
من یک فرم 2 لودینگ دارم.
یک فرم 1 دیگر هم دارم که تووش درخته و این درخته توسط تابع مثلا ایکس پر میشه.
تابع ایکس در لود فرم 1 است.(هنگ بودن سیستم هم همینجاست).
(در مجموع بگم که پر شدن درخت در هنگام بالا اومدن فرم 1 باید انجام بشه)
حالا میخوام فرم 1 که داره لود میشه و درخت پر میشه،لودینگ نمایش بده.
فقط یک مسئله که میخوام حداقل 2 ثانیه لودینگ نمایش داده بشه،حتی اگر نیاز نبود.
اگرم که نیازه که به اندازه نیازش لودینگ رو نمایش بده.
(البته اگه اینم نشد،مشکلی نیس،فقط لود بیاد و بره به اندازه)
در آخرم این فرم 2 لودینگ بسته بشه.
من میدونم که با اینا باید کار کرد ولی یا ارور میده یا نمیشه:
Invoke
Thread
BackgroundWorker
Delegate
Timer
لطفا کامل توضیح بدین دوستان:ناراحت:
_____________________
مشکل اینجاست که من تابع پر کردن درختام(تابع ایکس) توو لود فرم 1 است.
وقتی اون تابع رو میام میزارم توو DoWork این ارور میاد:
Cross-thread operation not valid: Control 'TrvCoding' accessed from a thread other than the thread it was created on.
TrvCoding هم اسم درخته.
واسه همین میام این رو میزارم بالا سر تابه ایکس:
CheckForIllegalCrossThreadCalls = false;
بعد این ارور رو توو DoWork میده:
Action being performed on this control is being called from the wrong thread. Marshal to the correct thread using Control.Invoke or Control.BeginInvoke to perform this action.
(آخه اومدم تابع ایکس رو گذاشتم توو DroWork . نذارمم که اصلا سودی نداره و لودینگی نمیشه!)
بعد واسه رفع این ارور ، این ایـــــــــف رو میذارم:
if (TrvCoding.InvokeRequired == false)
{
TvfCoding.LoadTreeFullData();
}
ولی باز لودینگی نمیبینم.
یعنی هستا ولی 1 میلیونم ثانیه.
اصلا میگیم اینا که من گفتم کار کنه،
من میخوام حداقل 2 ثانیه لودینگ بده.
چرا false?
چون اگه true باشه،
Cross-thread operation not valid: Control 'TrvCoding' accessed from a thread other than the thread it was created on.
میاد!!!
حقم داره ، چون داره توو لود فرم 1 ، تابع ایکس یک بار میاد.
البته این خط رو هم کامنت کردم ولی در مجموع کار نمیکنه!
حالا چطور من تابه DoWork رو توو لودینگ فرم 1 بیارم؟آیا راه اینه؟اگه آره،مشکل توو این قسمته:
backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
و
private void form1_Load(object sender, EventArgs e)
که نوع E یکی نیس!
Cast هم نمیشه.ارور میده.
آگه راه هم این نیس، راه لطفا
_____
هرچی مثال توو نت است،اومدن عملیاتشون رو توو دگمه نوشتن.
ولی مال من توو لود است