MsgBox.Show() Cleanup
MsgBox.Show() Cleanup ist eine Maintenance-Routine, die die obsoleten Methodenaufrufe MsgBox.Show(...)
durch throw MsgBoxException(...)
ersetzt.
Im Login-Dialog muss der Maintenance-Mode aktiviert werden, damit sie verfügbar ist. Die Routine kann in der IDE über das Menü Update / FS 4.7 / (2) MsgBox.Show() Cleanup aufgerufen werden.
Mit dem Button Analyze wird eine Analyse ohne Änderungen gestartet. Die Resultate werden in der Error-Liste ausgegeben.
Der Button CleanUp führt die Änderungen aus. Dazu werden die betroffenen Forms ausgecheckt, geändert und gespeichert.
Beim anschließenden Compile kann es zu etlichen "unreachable Code" Warnings kommen. Hinter dem MessageBox-Aufruf musste früher ggf. Code geschrieben werden, damit der C#-Compiler keinen Fehler produziert. Dieser Code wurde allerdings niemals ausgeführt.
protected int GetValue()
{
if (this.value == 0)
{
// FSCodeMessage: Test
MsgBox.Show(MLUtil.GetMLKeyText(MLKeys.LBL_Test), "", MsgBoxButtons.OK, MsgBoxIcons.None, null);
return 0; // <== wird niemals ausgeführt
}
else
{
return this.value;
}
}
Nach der Umstellung auf throw...
wird diese Code-Zeile korrekt als unerreichbar erkannt und vom C#-Compiler eine Warning generiert.
Diese Stellen können entsprechend nachgearbeitet werden.
// FSCodeMessage: Test
throw MsgBox.Exception(MLUtil.GetMLKeyText(MLKeys.LBL_Test), "", MsgBoxButtons.OK, MsgBoxIcons.None, null);
return 0; // <== unreachable Code
Nach erfolgreichen Compile müssen die Forms eingecheckt werden.
Beschreibung
Wird in der Broker-Application wie bisher eine MessageBox ausgegeben, dann mündet der heute verwendete Aufruf MsgBox.Show(...)
in einer Exception.
// FSCodeMessage: Test
MsgBox.Show(MLUtil.GetMLKeyText(MLKeys.LBL_Test), "", MsgBoxButtons.OK, MsgBoxIcons.None, null);
Dies hat folgende Nachteile:
- Der Aufruf dieser Methode verschleiert die Exception.
- Es gibt keine "Unreachable code detected"-Warning, wenn nach diesem Aufruf weiterer Code vorhanden ist.
- Bei Methoden, die einen Return-Wert haben, muss ein Fake-Return programmiert werden.
Mit Framework Studio 4.7 wurde dieser Mechanismus deshalb optimiert. Der durch den MessageBox-Wizard generierte Code sieht nun wie folgt aus:
// FSCodeMessage: Test
throw MsgBox.Exception(MLUtil.GetMLKeyText(MLKeys.LBL_Test), "", MsgBoxButtons.OK, MsgBoxIcons.None, null);
MsgBox.Show()
wird weiterhin uneingeschränkt funktionieren, falls Sie den Code nicht konvertieren.