PDA

View Full Version : سوال: ارور TimeOut هنگام استفاده از Thread



antisocial
یک شنبه 10 آبان 1388, 20:18 عصر
با سلام
من از نخ در برنامم استفاده کردم
و کدم به این شکله


void Search()
{
dtn = new DataTable();


string selec = "select field1,field2 from "+nametable+"

dtn = tb.Select(selec);

lv.Invoke(new new_delegate(new_t));
}

public delegate void new_delegate();
void new_t()

{
int j = 0;
foreach (DataRow dr in dtn.Rows )
{
lv.Items.Add(dr[0].ToString());
lv.Items[j].SubItems.Add(dr[1].ToString());
Application.DoEvents();
j++;
}
}

اما به محض اینکه فرمان سلکتم بیشتر از چند دقیقه طول میکشه میگه وقت تمومه.اروری مربوط به Timeout
میده.باید چه کار کنم تا درست بشه؟
خواهش میکنم کمک کنید

esmartiz_red
دوشنبه 11 آبان 1388, 01:26 صبح
از متد Thread.Join استفاده کن و زمان مورد نظرتو برای اجرای thread ست کن
به جای کلمه thread باید نام thread که ساختی رو بنویسی بعد هم پرانتز و داخلش زمان مورد نظر
امیدوارم کمک کرده باشم

moferferi
دوشنبه 11 آبان 1388, 09:19 صبح
از متد Thread.Join استفاده کن و زمان مورد نظرتو برای اجرای thread ست کن
به جای کلمه thread باید نام thread که ساختی رو بنویسی بعد هم پرانتز و داخلش زمان مورد نظر
امیدوارم کمک کرده باشم

سلام.
این که شما میگید زمان مورد را تست کنید .ایا این زمان ر سیستم های مختلف با مشخصات سخت افزاری مختلف ممکنه فرق کنه .و اگه فرق میکنه باید به چه شکلی این مشکل را حل کنیم

antisocial
دوشنبه 11 آبان 1388, 19:32 عصر
از متد Thread.Join استفاده کن و زمان مورد نظرتو برای اجرای thread ست کن
به جای کلمه thread باید نام thread که ساختی رو بنویسی بعد هم پرانتز و داخلش زمان مورد نظر
امیدوارم کمک کرده باشم



متاسفانه مشکل حل نشد


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


اگر میشه دقیق توضیح بدید من چه کدی رو باید بنویسم.این کد من





private void btn_Click(object sender, EventArgs e)

{
lb = lb1;
lv = lv1;
nametable = "t1";
Thread t = new Thread(new ThreadStart(Search));
t.Start();
{
DataTable dtn = new DataTable();
string nametable = "";
ListBox lb;
ListView lv;
void Search()
{
dtn = new DataTable();
string shomareha = "(";
foreach (string item in lb.Items)
shomareha += item + ",";
shomareha = shomareha.Remove(shomareha.Length - 1, 1);
shomareha += ")";
string selec = "select field1,field2 from "+nametable+" "+
" where field1 in " + shomareha + " and (field2<>'" + lp + "' or field2 is null )";
dtn = tb.Select(selec);
lv.Invoke(new new_delegate(new_t));
}
public delegate void new_delegate();
void new_t()
{
int j = 0;
foreach (DataRow dr in dtn.Rows )
{
lv.Items.Add(dr[0].ToString());
lv.Items[j].SubItems.Add(dr[1].ToString());
Application.DoEvents();
j++;
}
{

اینم متن ارور
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
در ضمن من از Backgroundworker هم استفاده کردم اما با همین ارور مواجه شدم


خواهش میکنم کمک کنید.

esmartiz_red
دوشنبه 11 آبان 1388, 23:46 عصر
http://msdn.microsoft.com/en-us/library/system.threading.thread.join%28VS.71%29.aspx
http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_24377845.html
http://stackoverflow.com/questions/263116/c-waiting-for-all-threads-to-complete
http://www.daniweb.com/forums/thread232655.html#