从两个以上的不同项目访问共享公共静态变量的复杂性

时间:2014-07-14 14:55:12

标签: c#

我有一个解决方案,包括一个Windows窗体应用程序,一个Windows服务应用程序,另一个模拟我的服务的窗体,以及一个包含在解决方案的3个项目中使用的类的库。

我已经使用公共静态方法设置了一个正确工作的日志类,服务模拟器表单和我的主窗口表单都可以调用此类的公共静态方法并将日志写入单个日志文件。

我的目标是放置一个文本框,几乎实时监控最新的事件,因此因为我认为当另一种方法在其上书写时(如果我是对的),读取日志文件是不安全的我在我的日志记录类中声明了一个公共静态字符串,可以通过同一类的方法轻松更新(可以从外部使用)。只有当我从其他表单(服务模拟器)记录事件时,我才能从其中一个表单(主项目)中读取此公共静态字符串变量时,我能够使用此场景它被擦除(= null)< / em>的。下面请查看示例:

  1. 记录方法:

    public class Audit
    {
        private static string LastLogString;
        public static string LastLogsString
        {
            get { return LastLogString; }
            set { LastLogString = value; }
        }
    
        public static void GlobalEventOccurrence(string EVENT_TEXT)
        {
            streamwriter strw = new streamwriter(THEPATH);
            strw.writeline(datetime.now.tostring() + EVENT_TEXT);
            strw.close();
            LastLogString = LastLogString + "EVENT_TEXT" + "\r\n";
        }
    
  2. 我如何在同一解决方案中的任何其他项目中使用它:

    Audit.GlobalEventOccurrence("The happened event text.");
    
  3. 我想如何检索变量内容:

    textbox1.text = Audit.LastLogsString;
    
  4. 为了澄清,当我在单个项目中使用第3部分时,它可以正常工作,但是当我将第2行用于另一个项目时,变量的值将重置为null,然后日志功能会起作用。

0 个答案:

没有答案