2015-08-04 16 views
5

Czy to w ogóle możliwe? Jeśli tak to jak? Przepływ byłoby coś jak:Rozpocznij wykonywanie pliku exe w oknach, uruchom ponownie komputer i odbierz, gdzie proces został przerwany.

private void DoStuff() 
{ 
    // Do some stuff 
    RestartPc(); 
} 

private void RestartPc() 
{ 
    Process.Start("shutdown", "/r /t 0"); 
} 

// Call this when the PC is restarted: 
private void DoStuffAfterRestart() {} 

Wszystko to kod będzie usługa okna, więc co będzie „najlepszy” sposób powiedzieć metodę OnStart pominąć DoStuffjeśli pc została wznowiona i przejść prosto do DoStuffAfterRestart, ponieważ usługa będzie ustawiona na automatyczne uruchamianie.

+0

Gdzie dokładnie jest problem? możesz napisać swój ostatni wykonany krok do bazy danych, plik json, .... a następnie ustalić, co dalej robić po restarcie. czy masz problemy z samym obiektem? –

+2

Rzeczywiście twój proces ma etapy, kiedy twój proces kończy jeden z etapów, przechowuj go w pliku xml i kiedy wtedy okno zaczyna ponownie czytać ten xml i kontynuować od tego etapu – Monah

+0

Jest to nieunikniony dość ogólny komentarz, ponieważ odpowiedź może być długa, ale: Czy rozważałeś użycie ** Workflow Foundation **? Jeśli wykonujesz sekwencję czynności, możesz utrzymywać stan przepływu pracy, ponownie uruchomić komputer, a następnie wznowić przepływ pracy (od bardzo następnego kroku). Do tego zadania można również użyć ** Odzyskiwanie aplikacji i Uruchom ponownie **. –

Odpowiedz

2

Idk jeśli istnieją specjalne metody dla tego, ale chciałbym mieć rozwiązanie:

dodać program do autostartu. EDYCJA: Tak jak w @PTwr, nie powinieneś używać normalnego autostartu. Zamiast tego użyj Run once registry key.

Zmień kod do czegoś tak:

public static void main(string[] args) 
{ 
    var x = loadState(); 
    if(x == null) 
     DoStuff(); 
    else 
     DoStuffAfterRestart(); 
} 

private void DoStuff() 
{ 
    // Do some stuff 
    SafeState(); 
    RestartPc(); 
} 

// Call this when the PC is restarted: 
private void DoStuffAfterRestart() {} 

W bezpiecznych metod/wczytać trzeba by napisać coś do pliku/rejestru pamiętać swój aktualny stan

Zapisując cię „prąd pozycja "możesz" zapamiętać 'gdzie byłeś ostatni raz i robić właściwe rzeczy po ponownym uruchomieniu.

+0

tak, to najlepszy sposób, aby przejść w tej sytuacji. dzięki;) – Mefhisto1

+0

@ Mefhisto1 Nie ma za co. Zobacz moją edycję po więcej myśli. –

+3

Nie używaj starego "autostartu", szczególnie jeśli chcesz uruchomić go tylko raz. Zamiast tego użyj [klucz rejestru RunOnce] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa376977 (v = vs.85) .aspx). – PTwr

Powiązane problemy