2016-10-21 2 views
0

값을 얻은 후 IsStringBuilderWritten을 false로 설정하려고합니다. 그러나 나는 그것을 이해할 수 없다.값을 얻은 후에 변수를 설정하는 방법

StringBuilder를 사용하려면 IsStringBuilderWritten을 false로 설정해야하지만 그 값을 설정하는 방법을 모르므로 StringBuilder를 한 번만 사용할 수 있습니다. 이 문제를 어떻게 해결할 수 있습니까? 어쩌면이 일 것

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

:

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

와 나는 그것을 사용합니다. 임시 변수를 추가하여 _isStringBuilderWritten의 값을 넣은 다음 해당 값을 false로 설정합니다. 그런 다음 임시 직원을 반환하십시오.

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