Я пишу курсовую запуск программ по расписанию на C#, тип проекта Windows Forms. Преподаватель сказал реализовать через waitable timer. Вот мой код :
private void Form1_Load(object sender, EventArgs e)
{
string date, time, datenow = DateTime.Now.ToShortDateString(), timenow = DateTime.Now.ToShortTimeString(), way;
// MessageBox.Show(DateTime.Now.ToShortTimeString());
// MessageBox.Show(timenow);
Process p = new Process();
using (StreamReader fs = new StreamReader(@"C:\Users\Master\Documents\Visual Studio 2013\Projects\Cursovaya OS 1\Cursovaya OS 1\bin\Debug\datetime"))
{
while (!fs.EndOfStream)
{
// Читаем строку из файла во временную переменную.
date = fs.ReadLine();
//time = fs.ReadLine();
way = fs.ReadLine();
p.StartInfo.FileName = way;
DateTime utc;
utc=Convert.ToDateTime(date);
// MessageBox.Show(utc.ToString());
long duetime = utc.ToFileTime();
handle = CreateWaitableTimer(IntPtr.Zero, true, "WaitableTimer");
SetWaitableTimer(handle, ref duetime, 0, IntPtr.Zero, IntPtr.Zero, true);
uint INFINITE = 0xFFFFFFFF;
int ret = WaitForSingleObject(handle, INFINITE);
p.Start();
}
Но процесс не запускается. Формат файла где находится дата и время, а также путь к файлу:
08.03.2017 9:20
D:\Des1.txt
Помогите пожалуйста разобраться в проблеме.
Скопировав твой код у меня переменная way равна null. Сделать по своему все работает. Создай пустой класс TimerAPCProc, чтобы ошибки не было. Надеюсь помог.
[DllImport( "kernel32.dll" )]
public static extern IntPtr CreateWaitableTimer( IntPtr lpTimerAttributes, bool bManualReset,
string lpTimerName );
[DllImport( "kernel32.dll" )]
public static extern bool SetWaitableTimer( IntPtr hTimer, [In] ref long pDueTime,
int lPeriod, TimerAPCProc pfnCompletionRoutine,
IntPtr lpArgToCompletionRoutine, bool fResume );
[DllImport( "kernel32.dll", SetLastError = true, ExactSpelling = true )]
public static extern Int32 WaitForSingleObject( IntPtr handle, int milliseconds );
private IntPtr handle;
private void Form1_Load( object sender, EventArgs e )
{
string date, time, datenow = DateTime.Now.ToShortDateString(), timenow = DateTime.Now.ToShortTimeString(), way;
// MessageBox.Show(DateTime.Now.ToShortTimeString());
// MessageBox.Show(timenow);
Process p = new Process();
using ( StreamReader fs = new StreamReader( @"C:\Users\Admin\Documents\1\Del1" ) )
{
while ( !fs.EndOfStream )
{
// Читаем строку из файла во временную переменную.
date = fs.ReadLine();
//time = fs.ReadLine();
way = fs.ReadLine();
p.StartInfo.FileName = way;
DateTime utc;
utc = Convert.ToDateTime( date );
// MessageBox.Show(utc.ToString());
long duetime = utc.ToFileTime();
handle = CreateWaitableTimer( IntPtr.Zero, true, "WaitableTimer" );
SetWaitableTimer( handle, ref duetime, 0, null, IntPtr.Zero, true );
uint INFINITE = 0xFFFFFFFF;
int ret = WaitForSingleObject( handle, (int)INFINITE );
p.Start();
}
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Проходил онлайн-собеседование и был предложен тест:
Имеется программа обрабатывающая различные файловые пути (напр: C:\Users\J
Из вне приходит произвольная строка и нужно определить ее язык
Суть проста В picturebox загружается картинка, потом по нажатию кнопки добавляется ватермарка НО! Сейчас добавляется только указанная в пути...