使用全局变量将Winform重写为控制台应用程序

时间:2014-06-02 21:28:42

标签: variables console global

这可能真的很微不足道但我在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中的功能完全正常(并且没有用户输入)。但是,我在存储变量和连接方面存在问题,因为它可以用于所有方法。什么是最好的方法?

1 个答案:

答案 0 :(得分:0)

我建议定义一个类,其中包含您需要在整个程序中访问的所有变量的属性,然后将该类的单个实例作为private readonly变量,并在构造函数中初始化它。

要确保的一件事是,如果您正在使用线程,那么您将保持一切安全。如果您使用的是线程,我建议您查看this page