我希望在得到它的值后将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);
}
}
}
答案 0 :(得分:0)
也许这会奏效。我添加了一个临时变量来放置_isStringBuilderWritten的值,然后将其值设置为false。然后返回temp。
public bool IsStringBuilderWritten
{
get {
bool temp = _isStringBuilderWritten;
_isStringBuilderWritten = false;
return temp;
}
set { _isStringBuilderWritten = value;
if (IsStringBuilderWritten) { OnstringBuilderWritten(); }
}
}