דוט נט: שיקום עצמי מקריסות
-
שלום
תוכנה שאמורה לעבוד 24 שעות, איך אני יכול לדאוג שבמקרה ויש קריסה כלשהי מצד התוכנה (אינני מדבר מצד המחשב כרגע) היא סוגרת את עצמה במנהל היישומים, ופותחת את עצמה מחדש.
במושגים של תיכנות הייתי חושב על זה כמו להכניס את כל התוכנה כולה בתוך try אחד ענק, שבמקרה של שגיאה בלתי ידועה, התוכנה סוגרת את עצמה מאפסת הכל ומפעילה את עצמה מחדש.אני מניח שיהיו שיאמרו לבנות תוכנה נפרדת שתנטר כל הזמן את הפעילות של התוכנה השניה על ידי טיימר... זה לדעתי אמור להיות רעיון גרוע אלא אם אין ברירה כרגיל...
פורסם במקור בפורום CODE613 ב25/02/2014 01:54 (+02:00)
-
ב WPF אפשר לנסות לעשות כך:
Imports System.Reflection Class Application ' Application-level events, such as Startup, Exit, and DispatcherUnhandledException ' can be handled in this file. Private Sub Application_Exit(sender As Object, e As System.Windows.ExitEventArgs) Handles Me.Exit Process.Start(Assembly.GetExecutingAssembly().Location) End Sub End Class
פורסם במקור בפורום CODE613 ב25/02/2014 06:50 (+02:00)
-
אפשר גם לעשות כך:
using System.Windows; using System; using System.Diagnostics; using System.Reflection; namespace Demo { public partial class App : Application { protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); try { var mainWindow = new MainWindow(); var mainWindowViewModel = new MainWindowViewModel(); mainWindow.DataContext = mainWindowViewModel; mainWindow.Show(); } catch (Exception ex) { Process.Start(Assembly.GetExecutingAssembly().Location); } } } }
פורסם במקור בפורום CODE613 ב25/02/2014 09:49 (+02:00)
-
ועיין גם כאן יש כמה רעיונות.
ויש גם כאן.using System; using System.Diagnostics; using System.Reflection; using System.Windows; namespace Demo { public partial class App : Application { private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e) { Process.Start(Assembly.GetExecutingAssembly().Location); } } }
פורסם במקור בפורום CODE613 ב25/02/2014 10:46 (+02:00)