我是Asp.net和C#的新手,我正在尝试记录对目录所做的更改。我遇到的问题是,从我的方法中获取对目录所做的更改,我无法将信息(以字符串的形式)添加到列表,列表框或方法之外的任何内容。
以下是获取目录更改的方法:
protected void OnChanged(object sender, FileSystemEventArgs e)
{
if (!m_bDirty)
{
m_Sb.Clear();
m_Sb.Append(e.FullPath);
m_Sb.Append(" ");
m_Sb.Append(e.ChangeType.ToString());
m_Sb.Append(" ");
m_Sb.Append(DateTime.Now.ToString());
m_bDirty = true;
test.Add(m_Sb.ToString());
以下是方法之外的变量:
public partial class _Default : System.Web.UI.Page
{
private System.IO.FileSystemWatcher watcher;
private bool m_bDirty;
private StringBuilder m_Sb = new StringBuilder();
private List<String> test = new List<String>();
我的问题是,当我尝试从OnChanged方法之外的列表(测试)中提取信息时,那里什么都没有。
答案 0 :(得分:3)
每当页面上发生回发时,您的列表测试将重新初始化为新列表,这将清除它可能拥有的任何数据。
您可以将其声明为静态字段,然后在页面
中初始化它private static List<string> test;
protected void Page_Init(object sender, EventArgs e) {
test = test ?? new List<string>();
// ... additional initalization
}
然后,您可以通过其他方法处理后将其设置为空来清除列表。