اشکال در اجرای task روزانه
با سلام و احترام
طبق کد زیر باید روزانه task مورد نظر اجرا بشه .
ولی هیچ وقت شرط اولی اجرا نمیشه. چرا؟
interval=100;
private void timer1_Tick(object sender, EventArgs e)
{
PersianCalendar pc = new PersianCalendar();
DateTime nowTime = DateTime.Now;
DateTime scheduledTime = new DateTime(nowTime.Year, nowTime.Month, nowTime.Day, Houre, Minute, Second, 0);
if (nowTime == scheduledTime)
{
timer1.Stop();
StartTask();
timer1.Start();
scheduledTime = scheduledTime.AddDays(1);
}
}
نقل قول: اشکال در اجرای task روزانه
اگر خروجیشون رو چاپ میکردید متوجه میشید
MessageBox.Show($"nowTime: {nowTime} - scheduledTime:{scheduledTime}");
بخاطر عدم تنظیم AM/PM هست
https://stackoverflow.com/questions/...me-format-in-c
نقل قول: اشکال در اجرای task روزانه
نقل قول:
نوشته شده توسط
danialafshari
برای علامت $ خطا میده. به دات نت مربوطه؟( برای من vs2008 و دات نت 3.5 هستش.)
اجرا نشدن if فکر میکنم به خاطر میلی ثانیه هستش. چون برای تایمر interval=100 تعریف شده و شمارنده nowTime خیلی سریعتر عمل میکنه(دقیقا نمیدونم) در فاصله زمانی 100 میلی ثانیه که تایمر میخواد چک کنه میلی ثانیه nowTime از میلی ثانیه scheduledTime رد میشه به خاطر همین هیچوقت باهم برابر نمیشن . اما وقتی به شکل زیر تعریف میکنم if اجرا میشه :
if (nowTime.Day == scheduledTime.Day && nowTime.Hour == scheduledTime.Hour &&
nowTime.Minute == scheduledTime.Minute && nowTime.Second == scheduledTime.Second)
نقل قول: اشکال در اجرای task روزانه
یه مشکل دیگه که ایجاد شده با همین روش هم که دستور if اجرا میشه برای بار دوم خطای عدم دسترسی به پوشه مقصد را میده!
زمان اجرای Task را در هر 1 دقیقه گذاشتم . بار اول درست اجرا میکنه اما بار دوم خطای عدم دسترسی به مقصد رو میده.
scheduledTime = scheduledTime.AddMinutes(1);
البته این نکته را بگم پوشه مقصد ، یه پوشه Share شده هستش ولی دسترسی ادمین داره و بصورت دستی هم باز میشه ولی نرم افزار در اجرای دوم خطا میده.
string farhangiFile = System.IO.Path.Combine(targetPath, fileName);
یه راهی که به نظرم میرسه اجرا کنم استفاده از using برای کل task هستش تا پس از اتمام using همه چیز به حالت قبلی برگرده. اما نمیدونم از using چطوری استفاده کنم.