Ich habe ein Programm im Test - nur auf ein paar Desktops ausgeführt -, die manchmal sehr seltsames Verhalten beim Start von Windows gibt.C# Programm, das auf Windows startet Startup Verhalten seltsam
Das Programm beginnt mit diesem:
public frmClient()
{
_version = ApplicationDeployment.IsNetworkDeployed ? ApplicationDeployment.CurrentDeployment.CurrentVersion : _version;
_nicText = string.Format("My Program ({0})", _version.ToString());
Logger.LogToFile(string.Format("Startup - Build: {0}, Major: {1}, MajorRevision: {2}, Minor: {3}, MinorRevision: {4}, Revision {5}",
_version.Build,
_version.Major,
_version.MajorRevision,
_version.Minor,
_version.MinorRevision,
_version.Revision));
InitializeComponent();
}
Die Form tatsächlich beginnt die Taskleiste minimiert und in dem Load verwendet er die _nicText den Tooltip des Notification-Symbol wie folgt festzulegen:
private void frmClient_Load(object sender, EventArgs e)
{
try
{
Logger.LogToFile("frmClient.frmClient_Load");
nicMain.Text = _nicText + " - NOT CONNECTED";
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
die Logger-Klasse ist wie folgt:
public static class Logger
{
public static void LogToFile(string LogMessage)
{
StreamWriter log;
if (!File.Exists("logfile.txt"))
{
log = new StreamWriter("logfile.txt");
}
else
{
log = File.AppendText("logfile.txt");
}
log.WriteLine(DateTime.Now.ToString("yyyyMMddHHmmss") + " - " + LogMessage);
log.Close();
}
}
Wenn ich das Programm lo laufen Natürlich bekomme ich (0.0) für die Versionsinformation, ansonsten bekomme ich eine Vollversion (1.0.0.31 aktuell)
Allerdings habe ich manchmal beim Start eine Usershow (0.0) als Version, und in diesen Fälle, in denen NICHTS in die Protokolldatei geschrieben wird.
Derzeit ist meine einzige Vermutung, dass die Anwendung gestartet wird, bevor Windows bereit ist (nur eine blinde Schätzung). Passiert das? Wenn ja, kann ich etwas verzögern, bis Windows bereit ist? Vermisse ich etwas anderes?
Hilft die Antwort hier überhaupt? http://stackoverflow.com/questions/5332544/returning-clickonce-version-doesnt-work-when-launching-application-on-startup-f – Andy
Absichtlich zeigen (0, 0) ist nicht sehr nützlich. Dollars zu Donuts einige Benutzer haben herausgefunden, dass es besser funktioniert, wenn sie die Exe vom Netzwerk-Standort kopieren :) Fehlende Log-Datei-Einträge neigen dazu, dass sie eine alte Version kopieren oder Ausnahmen verschlucken. –
Ich vermute, dass nichts in die Protokolldatei geschrieben wird, weil Sie in das falsche Verzeichnis suchen. (Ihr Protokolldateiname enthält keinen Pfad, sodass er in dem aktuellen Verzeichnis erstellt wird.) –