这可能真的很微不足道但我在C#console app(从Winform应用程序重写)中遇到了一些变量。这里有一些代码,所以你可以解决问题。
Public partial class Form1:Form
{
private string ArchieveDir;
private string IncomingDir;
private string ProblemDir;
private string DuplicateDir;
private string Downloader App;
public Form1()
{
InitializeComponent();
System.Data.SqlClient.SqlConnection myCon = new System.Data.SqlClient.SqlConnection(X.Settings.Settings.ConnectionString);
XmlDocument cfg = new XmlDocument();
try
{
cfg.Load("config.xml");
ArchiveDir = cfg.SelectSingleNode("/ExcelRecalc/Archive").InnerText;
IncomingDir = cfg.SelectSingleNode("/ExcelRecalc/Incoming").InnerText;
ProblemDir = cfg.SelectSingleNode("/ExcelRecalc/Problem").InnerText;
DuplicateDir = cfg.SelectSingleNode("/ExcelRecalc/Duplicate").InnerText;
DownloaderApp = cfg.SelectSingleNode("/ExcelRecalc/DownloaderApp").InnerText;
}
catch( Exception ex)
{
System.Console.WriteLine(ex.Message);
}
}
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private bool Calculate(DataRow dr)
{
//Application quite long, used in method DownloadIntoDir//
}
private void DownloadIntoDir()
{
//Require no user input, get files from specified directory, uses Calculte to perform calculation, saves into DB using a conn//
}
private void ConnectRecords()
{
//Requires no user input, connects file (produced by DownloadIntoDir) to another table in DB//
}
private void Form1_Load(object sender, EventArgs e)
{
SqlConnection conn = new SqlConnection(GSI.Settings.Settings.ConnectionString);
DownloadIntoDir();
ConnectRecords();
Application.Exit();
}
}
}
好的,这几乎就是整个计划。方法Calculate,DownloadIntoDir和ConnectRecords都运行正常。但是,在Winform中,我保存了数据库连接和变量,它们将目录信息存储到应用程序表单中,然后可以通过所有方法访问它们。 (所有方法都需要目录和连接)。它在Winform中的功能完全正常(并且没有用户输入)。但是,我在存储变量和连接方面存在问题,因为它可以用于所有方法。什么是最好的方法?
答案 0 :(得分:0)
我建议定义一个类,其中包含您需要在整个程序中访问的所有变量的属性,然后将该类的单个实例作为private readonly
变量,并在构造函数中初始化它。
要确保的一件事是,如果您正在使用线程,那么您将保持一切安全。如果您使用的是线程,我建议您查看this page。