PDA

View Full Version : مشکل با false نشدن تایمر



sepehr.kal
جمعه 14 تیر 1392, 21:31 عصر
من یک برنامه نوشته ام که در اون از چند تایمر استفاده میکنم اما یکی از این تایمر ها اصلا false نمیشود با هر روشی که امتحان کردم نشد
میخواستم ببینم میتونید کمکی توی این زمینه کنید ؟ مرسی ( این برنامه که نوشتم تست برنامه هستش حدود 5 تایمر استفاده شده که 4 تاش درست کار میکنه بعدی غیر فعال نمیشه ؟؟؟!! )

ببنید برنامه ای که من میخوام بنویسم ممکن هست از 200 تایمر استفاده کنه آیا درست هستش ؟!روش آسان دیگری نیست که بشه انجام داد ؟

CsharpNevisi
جمعه 14 تیر 1392, 21:36 عصر
کدتو بزار .. !!!

Salar Ashgi
جمعه 14 تیر 1392, 23:01 عصر
برنامه ای که من میخوام بنویسم ممکن هست از 200 تایمر استفاده کنه آیا درست هستش ؟!روش آسان دیگری نیست که بشه انجام داد ؟
ببینید آیا این کار شما منطقی است ؟! مقدار منابعی که لازمه به 200 تا تایمر اختصاص داده میشه رو بررسی کردید ؟!
بهتره اول توضیح بدید که چه کاری رو میخواین انجام بدین !

erfan_urchin
شنبه 15 تیر 1392, 00:47 صبح
ببنید برنامه ای که من میخوام بنویسم ممکن هست از 200 تایمر استفاده کنه آیا درست هستش ؟!روش آسان دیگری نیست که بشه انجام داد ؟
200 تا؟؟؟؟؟!!!!!!! :متعجب:
میدونید با این کار احتمال داره برنامتون هنگ کنه!!!
برای اینجور موارد بهترین راه استفاده از BackgroundWorker هستش
اصلا برنامتون چیه؟ بیشتر توضیح بدین شاید بشه با یکی دوتا تایمر درست کرد

sepehr.kal
شنبه 15 تیر 1392, 01:18 صبح
ببینید آیا این کار شما منطقی است ؟! مقدار منابعی که لازمه به 200 تا تایمر اختصاص داده میشه رو بررسی کردید ؟!
بهتره اول توضیح بدید که چه کاری رو میخواین انجام بدین !

کدتو بزار .. !!!


ببینید آیا این کار شما منطقی است ؟! مقدار منابعی که لازمه به 200 تا تایمر اختصاص داده میشه رو بررسی کردید ؟!
بهتره اول توضیح بدید که چه کاری رو میخواین انجام بدین !


200 تا؟؟؟؟؟!!!!!!! :متعجب:
میدونید با این کار احتمال داره برنامتون هنگ کنه!!!
برای اینجور موارد بهترین راه استفاده از BackgroundWorker هستش
اصلا برنامتون چیه؟ بیشتر توضیح بدین شاید بشه با یکی دوتا تایمر درست کرد


برنامه ای هستش که با وبروزر کار میکنه پس از زمان خاصی وارد سایت هایی که دارم میشه و روی قسمت خاصی کلیک میکنه و دستورات مرتبط رو انجام میده ؟!

ولی زمانی که کلیک میکنه دیگه false نمیشه ؟!

با این 2 تا هم تست کردم نشده :

timer.Enabled = false;
timer.Stop();

برای هر سایت باید 3 4 تا تایمر استفاده بشه که خیلی زاید میشه ...میخوام ببینم روش دیگه ای هست بغیر از استفاده از تایمر ؟؟

BackgroundWorker توضیحی راجع به این میدید ؟

نیاز به توضیح بود بگید توضیح بدم

sepehr.kal
شنبه 15 تیر 1392, 10:41 صبح
up......................

erfan_urchin
شنبه 15 تیر 1392, 20:48 عصر
نگاه کنید backgroundworker یه چیزیه مثل تایمر فقط فرقش چیزیه که تو اسمش گفته میشه یعنی backgroundworker (کارگر پشت زمینه)
backgroundworker باعث میشه شما کارای سنگینتونو باهاش انجام میدین بدون این که برنامه هنگ کنه یا سرعت برنامتون کند بشه
برای این کاری که شما انجام میدین من پیشنهاد میکنم از کد های زیر استفاده کنید
اول از همه کنترل BackgroundWorker رو add کنید به برنامتون و بعد کد های زیر رو بنویسین
private void Button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}

int i = 0;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (DateTime.Now.Hour != 15 && DateTime.Now.Minute != 10)
{
backgroundWorker1.ReportProgress(i);
System.Threading.Thread.Sleep(1000);
}
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
System.Diagnostics.Process.Start("http://www.google.com");
}
کد بالا میگه وقتی ساعت 15:10 شد سایت گوگل رو باز کن. هر یک ثانیه یه بار هم با استفاده از Thread چک میکنه که ساعت 15:10 شده یا نه؟
موفق باشی

erfan_urchin
شنبه 15 تیر 1392, 20:52 عصر
برای آموزش BackgroundWorker تو این لینک یه آموزش هست شاید بدردت بخوره
http://barnamenevis.org/showthread.php?200544-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-Backgroundworker

erfan_urchin
یک شنبه 16 تیر 1392, 01:12 صبح
سپهر جان معذرت میخوام یه تیکه از کد رو یادم رفت بنویسم و یه تیکه هم الان دیدم که اشتباه نوشتم :لبخند:
این کد درستشه
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
backgroundWorker1.WorkerReportsProgress = true;
}

private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync();
}

int i = 0;
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
if (DateTime.Now.Hour == 1 && DateTime.Now.Minute == 47 && DateTime.Now.Second == 0)
backgroundWorker1.ReportProgress(i);
System.Threading.Thread.Sleep(1000);
}
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
System.Diagnostics.Process.Start("http://www.google.com");
}
}
فقط حواست باشه اون یه تیکه کد که تو constractor فرم نوشتم backgroundWorker1.WorkerReportsProgress = true; اونو حتما بنویس وگرنه کار نمیکنه
موفق باشی