2013-03-19 3 views
2

У меня есть приложение, которое получает переданные аргументы командной строки. Через некоторое время я хочу перезапустить приложение, передав ему те же аргументы командной строки с первого запуска приложения.Application.Restart() with CommandLine Аргументы

private void frmSetTime_Load(object sender, EventArgs e) 
{ 
    try 
    { 
     string[] cmds = System.Environment.GetCommandLineArgs(); 
     //Here i gets Command Line Arguments 
    } 
    catch (Exception ex) 
    { 
     MessageBox.show(ex.message); 
    } 
    finally 
    { 
     GC.Collect(); 
    } 
} 

public void ExecuteLogic(Object obj) 
{ 
    try 
    { 
     //My set of Statements 
     Therad.sleep(5000); 
     ExecuteLogic(obj); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.show(ex.message); 
    } 
    finally 
    { 
     GC.Collect(); 
     ApplicationRestart(); 
    } 
} 

private void ApplicationRestart() 
{ 
    try 
    { 
     if (Process.GetCurrentProcess().WorkingSet64 >= 10000000) 
     {       
      Application.Restart();      
     } 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.message); 
    } 
} 

ответ

4

Это произойдет автоматически. Вам ничего не нужно менять.

Из документов в Application.Restart:

Если ваше приложение изначально поставлялись параметры командной строки, когда он первый выполняется, перезагрузка будет запустить приложение снова с теми же параметрами.

+0

У меня также есть закрытое событие Form, потому что мое приложение выходит, но не запускается снова. –

+0

Привет всем, Я получаю Решение. Он работает с Form_closed случае я просто добавить частный недействительным ApplicationRestart() { попробовать { если { Form1.FormClosed - = новый FormClosedEventHandler (Form1_FormClosed) (Process.GetCurrentProcess() WorkingSet64> = 10000000.); Application.Restart(); } } catch (Exception ex) { MessageBox.Show (ex.message); } } Также не забывайте убить процесс в событии Form_closed. Спасибо за вашу помощь. –

Смежные вопросы