2016-10-21 3 views
0

値を取得した後でIsStringBuilderWrittenをfalseに設定したいとします。しかし、私はそれを把握することはできません。値を取得した後に変数を設定する方法

StringBuilderを使用するにはIsStringBuilderWrittenをfalseにする必要がありますが、値の設定方法がわかりません。したがって、StringBuilderを1回だけ使用できます。どうすればこの問題を解決できますか?

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); 
     } 
    } 
} 

答えて

0

。 temp変数を追加して_isStringBuilderWrittenの値を入れ、その値をfalseに設定しました。次に、温度を返します。

public bool IsStringBuilderWritten 
     { 
      get { 
       bool temp = _isStringBuilderWritten; 
       _isStringBuilderWritten = false; 
       return temp; 
       } 
      set { _isStringBuilderWritten = value; 
        if (IsStringBuilderWritten) { OnstringBuilderWritten(); } 
       } 
     } 
関連する問題