2015-08-04 8 views
5

Bu mümkün mü? Öyleyse nasıl? Akış gibi bir şey olacaktır:Pencerelerde bir exe dosyasını çalıştırmaya başlayın, bilgisayarı yeniden başlatın ve işlemin nerede kaldığını öğrenin

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() {} 

Bütün bu kod bir pencere servis olacağını, bu yüzden DoStuffatlamak için OnStart yöntemini anlatmak için 'en iyi' yolu ne olurdu pc yeniden ve gitmek olsaydı DoStuffAfterRestart numaralı telefona otomatik olarak başlanacaktır.

+0

Sorun nerede? Son yürütülen adımı bir veritabanına, json dosyasına, .... yazabilir ve sonra yeniden başlattıktan sonra ne yapacağınızı belirleyebilirsiniz. ya da restert ile ilgili sorunlarınız mı var? –

+2

aslında işleminizin aşamaları vardır, işleminiz bir aşamaları bitirdikten sonra, bir xml dosyasında saklayın ve sonra pencere yeniden başlatıldığında bu xml dosyasını okuyun ve bu aşamadan devam edin – Monah

+0

Bu cevap çok uzun olabilir çünkü cevap uzun olabilir ama: ** Workflow Foundation ** kullanmayı düşündünüz mü? E işlem sırası yapıyorsanız, iş akışı durumunu devam ettirebilir, bilgisayarı yeniden başlatıp iş akışına devam edebilirsiniz (bir sonraki adımdan). Ayrıca bu uygulama için ** Uygulama Kurtarma ve Yeniden Başlatma ** kullanılabilir. –

cevap

2

bunun için özel yöntemler olup olmadığını Idk ama bir çözüm olurdu:

otomatik başlatma için programınızı ekleyin. DÜZENLEME: @PTwr gibi işaret, normal otomatik başlatmayı kullanmamalısınız. Bunun yerine Run once registry key kullanın.

Değişim şöyle bir şey kodu: size kaydederek mevcut durumunu

hatırlamak için bir dosya/kayıt defterine bir şeyler yazmak zorunda kalacak güvenli/yük yöntemlerinde

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() {} 

'akımı pozisyonu 'son kez nerede olduğunuzu' hatırlayabilir ve yeniden başlatmanın ardından doğru şeyleri yapabilirsiniz.

+0

evet, bu durumda gitmenin en iyi yolu budur. teşekkürler;) – Mefhisto1

+0

@ Mefhisto1 Rica ederim. Daha fazla düşünce için düzenlememe bakın. –

+3

Özellikle "bir kez çalıştırmak istediğinizde" eski "autostart" kullanmayın. Bunun yerine [RunOnce kayıt defteri anahtarını] kullanın (https://msdn.microsoft.com/en-us/library/windows/desktop/aa376977 (v = vs.85) .aspx). – PTwr

İlgili konular