如何在获得值后设置变量

时间:2016-10-21 09:08:51

标签: c# variables set

我希望在得到它的值后将IsStringBuilderWritten设置为false。但我无法理解。

IsStringBuilderWritten必须为false才能使用StringBuilder,但我不知道如何设置它的值,因此我只能使用一次StringBuilder。我该如何解决这个问题?

class FileWhatcher : IDisposable
{
    public event System.EventHandler StringBuilderWritten;

    protected virtual void OnstringBuilderWritten()
    {
        StringBuilderWritten?.Invoke(this, EventArgs.Empty);
    }

    private bool _isStringBuilderWritten;

    public bool IsStringBuilderWritten
    {
        get { return _isStringBuilderWritten; }
        set { _isStringBuilderWritten = value; 
              if (IsStringBuilderWritten) { OnstringBuilderWritten(); } 
            }
    }
}

我用它:

public partial class Form1 : Form
{
    private FileWhatcher fw = new FileWhatcher();
    private List<StringBuilder> watchedInformation;

public Form1()
    {
        InitializeComponent();
        watchedInformation = new List<StringBuilder>();
        fw.Start("F:\\slayt");
        fw.StringBuilderWritten += new System.EventHandler(delegate (object sender, EventArgs args)
        {
            HandleComeNewWatch();
        });
    }

    private void HandleComeNewWatch()
    {
        if (fw.IsStringBuilderWritten)
        {
            watchedInformation.Add(fw.stringbuilder);
        }
    }
}

1 个答案:

答案 0 :(得分:0)

也许这会奏效。我添加了一个临时变量来放置_isStringBuilderWritten的值,然后将其值设置为false。然后返回temp。

public bool IsStringBuilderWritten
        {
            get { 
                 bool temp = _isStringBuilderWritten;
                 _isStringBuilderWritten = false;
                 return temp; 
                }
            set { _isStringBuilderWritten = value; 
                  if (IsStringBuilderWritten) { OnstringBuilderWritten(); } 
                }
        }