Ich würde gerne wissen, ob meine Methode, Methoden über mehrere Formulare hinweg verfügbar zu machen, sicher ist oder ob ich Probleme mit meinem Ansatz habe.Bedenken, Methoden in mehreren Formularen in C# WinForms verfügbar zu machen
Ich arbeite derzeit an einer Anwendung mit über einem Dutzend Formulare, und es gibt bestimmte Methoden, die von vielen dieser Formulare aufgerufen werden, so dass ich stattdessen eine neue Klasse mit dem Namen Globals.cs
und in diesem erstellt Klasse Ich erstelle eine Reihe von Klassen und Methoden, die ich in meiner gesamten Anwendung anrufe.
Ich habe bis jetzt keine Probleme mit meiner Einrichtung bemerkt, aber meine Sorge ist, was passiert, wenn eine meiner Methoden innerhalb meiner Globals.cs gleichzeitig von verschiedenen Formen aufgerufen würde? Ich habe void-Methoden, die Daten an SQL-Tabellen übergeben und ich habe Methoden, die Daten zurückgeben.
Ich verwende BackGroundWorkers
in einigen Formen, was würde passieren, wenn eine dieser Methoden gleichzeitig von zwei verschiedenen Workern oder von einem Worker und einem Methodenaufruf auf einer anderen Form aufgerufen würde?
Hier ist ein Beispiel meiner Klasse Globals.cs und ein paar der Methoden im Inneren.
class Globals
{
public static string getUserSetting(string userID, string form, string obj_name)
{
string value = "";
// Get setting value from SQL Table and assign it to return variable
return value;
}
public static void saveUserSetting(string userID, string form, string obj_name, string value)
{
// Save Passed in settings to SQL Table
}
public static string getEnviro()
{
if (!string.IsNullOrEmpty(Settings.Default.EnvironmentDefault))
return Settings.Default.EnvironmentDefault.ToString();
else
return "Live";
}
public class Properties
{
public static System.Drawing.Color colorPropertyFromString(string stringValue)
{
System.Drawing.Color returnValue = System.Drawing.Color.Empty;
if (!string.IsNullOrEmpty(stringValue))
{
int colorIntVal = -1;
bool output;
output = int.TryParse(stringValue, out colorIntVal);
returnValue = System.Drawing.Color.FromArgb(colorIntVal);
}
return returnValue;
}
}
}
/*
I use this Class to create new instances of SqlConnections through my application.
Example: If I need a new SqlConnection I would go:
SqlConnection conn = new SqlConnection(Conn.ConnectionString);
*/
public sealed class Conn
{
public static string ConnectionString = Settings.Default.ArborgConnectionString.ToString();
}
Nicht sicher, welche Standards und Namenskonventionen Sie befolgen. Es ist meine Empfehlung, dass Sie einige Ihrer Methoden und Klassen wie folgt umbenennen: 'GetUserSetting'' SaveUserSetting' 'GetEnvironment'' ColorPropertyFromString' 'Connection'. – HappyCoding