PDA

View Full Version : سوال: تا زمانی که فرم باز است...



samin_panahi
یک شنبه 07 مهر 1392, 20:13 عصر
می خوام تا زمانی که فرم باز هست پشت سر هم اطلاعات دیتاگرید یا دیتابیس رو بررسی کنه
می شه راهنمایی کنید؟

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

می خوام یه چیز تو مایه های یاد آوری انجام کار درست کنم
می خوام زمان انجام کار + کاری که باید انجام بشه تو دیتابیس ذخیره بشه
بعد تا زمانی که برنامه بازه دیتابیس بررسی بشه، هر وقت زمان انجام کار رسید پیغام بده که زمان انجام کار رسیده

cisco ++
یک شنبه 07 مهر 1392, 20:14 عصر
یه خورده بیشتر توضیح بدین

samin_panahi
یک شنبه 07 مهر 1392, 20:19 عصر
یه خورده بیشتر توضیح بدین
می خوام از وقتی که برنامه شروع به کار می کنه یه حلقه ی for اجرا بشه و اطلاعاتم رو بررسی کنه، وقتی for به آخر رسید دوباره از اول شروع کنه


for (int i = 0; i < dataGridView.Rows.Count - 1; i++)
{
if (dataGridView.Rows[i].Cells[0].Value.ToString() == DateTime.Now.ToShortTimeString())
{
MessageBox.Show(dataGridView.Rows[i].Cells[1].Value.ToString());
break;
}
}


می خوام کاری که کد بالا انجام می ده مدام (تا وقتی که فرم بازه) انجام بشه نه تو رویداد کلیک یه باتن

matrix-program
یک شنبه 07 مهر 1392, 20:54 عصر
تا وقتی که فرم بازه
رویداد form_load چون تا فرم میاد بالا کد شروع میشه خب پس تا فرم بازه این کد اجرا میشه
اگه منظورتون اینه که مثلا هر ثانیه کد اجرا شه پایینو بخون

مدام
در این صورت کدو داخل یه تایمر بزارید

drsina
یک شنبه 07 مهر 1392, 21:45 عصر
خیلی ساده ،

while(1 == 1 ){


//Do something

}

از نخ استفاده کن ، سپس ، نخ رو تو یه رویداد هات بزار !!!

samin_panahi
یک شنبه 07 مهر 1392, 21:45 عصر
رویداد form_load چون تا فرم میاد بالا کد شروع میشه خب پس تا فرم بازه این کد اجرا میشه
اگه منظورتون اینه که مثلا هر ثانیه کد اجرا شه پایینو بخون

در این صورت کدو داخل یه تایمر بزارید

تا حالا با تایمر کار نکردم، می شه بگید چطور؟

من می خوام یه چیز تو مایه های یاد آوری انجام کر درست کنم
می خوام زمان کار + کاری که باید انجام بشه تو دیتابیس ذخیره بشه
بعد تا زمانی که برنامه بازه دیتابیس بررسی بشه، هر وقت زمان انجام کار رسید پیغام بده که زمان انجام کار رسیده

samin_panahi
یک شنبه 07 مهر 1392, 21:55 عصر
خیلی ساده ،

while(1 == 1 ){


//Do something

}

از نخ استفاده کن ، سپس ، نخ رو تو یه رویداد هات بزار !!!

اتفاقا می خواستم با while (1=1) بنویسم ولی زیرش خط قرمز می کشه با while (textBox2.Text != "dgfdg") نوشتم ولی نمی دونم while رو باید کجا بذارم
هر جا می ذارم یه مشکلی هست
تو form هم می ذارم مجبورم دوتا break بذارم تا بذاره برنامه load بشه که با این حال باز هم کاری که می خوام انجام نمی شه

behzadkhatari
دوشنبه 08 مهر 1392, 09:09 صبح
شما باید از thread و یا در حالت ساده تر از timer استفاده کنی. استفاده ار for باعث قفل شدن برنامه میشه. کافیه یک کنترل timer بندازی رو فرمت و عملیات مورد نظزت رو تو رویداد tick تایمر انجام بدی. خاصیت اinterva رو برابر زمانی که میخوای اطلاعات ریفرش بسه به میلی ثانیه قرار بده . یادت نره خاصیت enabled رو هم true کنی

shahryari
دوشنبه 08 مهر 1392, 09:30 صبح
حلقه رو بیخیال شو
در این مورد از تایمر استفاده کنید بهتره
یک کنترل تایمر به فرمتون اضافه کنید و اینتروال رو برابر ( اگر میخواهید هر 5 ثانیه یکبار کنترل شود) برابر 5000 قرار دهید
و در رویداد تایمر ، کدهای کنترل دیتابیستون رو قرار بدید و رویداد فرم لود هم تایمر رو فعال کنید

prg_mail
دوشنبه 08 مهر 1392, 09:50 صبح
سلام

با وی بی قبلا نوشتمش با استفاده از تایمر : http://www.poroje.com/download-projects/822/%D9%BE%D8%B1%D9%88%DA%98%D9%87-%DB%8C%D8%A7%D8%AF%D8%A2%D9%88%D8%B1%DB%8C-%DA%A9%D8%A7%D8%B1%D9%87%D8%A7-%D8%A8%D8%A7-%D9%88%DB%8C%DA%98%D9%88%D8%A7%D9%84-%D8%A8%DB%8C%D8%B3%DB%8C%DA%A9.html

کداشو میزارم مشابشو تو سی شارپ استفاده کن :



Private Sub Timer1_Timer()
Label1.Caption = Time
Label2.Caption = Date
Dim t, d, a, b As String
On Error Resume Next
Adodc1.Recordset.MoveFirst
If Adodc1.Recordset.EOF <> True Then
t = Label1.Caption
d = Label2.Caption
For i = 1 To Adodc1.Recordset.RecordCount
a = Adodc1.Recordset.Fields("saat")
b = Adodc1.Recordset.Fields("tarikh")
If t = a And d = b Then _
c = MsgBox("ÊæÌå º ÒãÇä í˜ ãæÖæÚ ÝÑÇ ÑÓíÏå " + Chr(13) + Chr(13) + "äÇã : " + Adodc1.Recordset.Fields("mozo") + Chr(13) + "ÊæÖíÍÇÊ : " + Adodc1.Recordset.Fields("tozihat"), vbExclamation, "ÊæÌå")
Adodc1.Recordset.MoveNext
Next
End If
End Sub

sajadsobh
دوشنبه 08 مهر 1392, 10:28 صبح
چرا از خاصیت visible استفاده نمیکنی؟!
یه دستور while داریم که تا وقتی که فرم بازه یه کار رو برات انجام میده:

while (Visible)
{

//حلقه یا کدی که میخوای اجرا بشه رو اینجا بنویس

}

samin_panahi
دوشنبه 08 مهر 1392, 15:16 عصر
تشکر از همه ی دوستان، تقریبا انجام شد