我想反序列化xml文件列表,我希望用戶能夠選擇要反序列化的文件。線程C#ASP.NET失去變量ASP.NET
static List<string> mylist = new List<string>();
string filename;
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Thread newThread = new Thread(new ThreadStart(ThreadMethod));
newThread.SetApartmentState(ApartmentState.STA);
newThread.Start();
}
public void ThreadMethod()
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.ShowDialog();
filename = dlg.FileName;
}
protected void ButtonDeserialize_Click(object sender, EventArgs e)
{
var serializer = new XmlSerializer(typeof(List<string>));
using (var stream = File.OpenRead(filename))
{
var other = (List<string>)(serializer.Deserialize(stream));
mylist.Clear();
mylist.AddRange(other);
}
}
線程結束後,文件名becomse爲null。 任何想法爲什麼會發生? 順便說一下,我不得不這樣做openfiledialog,因爲它是唯一對我有用的方法。 在此先感謝!
無論如何,我真的不會使用多個線程進行UI工作 - 您可以在另一個線程中執行*反序列化*,但這是另一回事。你有沒有添加日誌記錄來檢查它是否真的到達'filename'賦值行?也許正在拋出異常? –
等待,您正在Web應用程序上使用OpenFileDialog?武漢理工大學? – NothingsImpossible
我真的很驚訝OpenFileDialog不會導致異常,或在Web應用程序中不能以另一種方式工作。無論如何,我不明白它是如何有用的。 – Stilgar