我创建了一个线程(或者我正在尝试),它会自动保存每隔那么多分钟。每当我点击按钮启动线程,程序就不会按照指示自动保存。所以我正在寻求帮助。下面的代码:穿线 - 困难。我究竟做错了什么?
private Thread saver;
...
saver.SetApartmentState(System.Threading.ApartmentState.STA);
saver = new Thread(new ThreadStart(SaveRegularly));
saver.Start();
这里是我的SaveRegularly
方法:
private bool stopAndDie = false;
private void SaveRegularly()
{
//DateTime saveDueAt = DateTime.Now.AddMinutes(0.25);
//do
//{
//Thread.Sleep(1000);
//if (DateTime.Now >= saveDueAt)
//{
if (SaveDoc.FileName != "") //ADDED THIS TODAY (24/09)
{
CreateWordDocument(FilePath, SaveDoc.FileName, pathImage);
MessageBox.Show("Updated");
return;
}
else
{
if (SaveDoc.ShowDialog() == DialogResult.OK)
{
CreateWordDocument(FilePath, SaveDoc.FileName, pathImage);
MessageBox.Show("New Save");
return;
}
}
timer1.Start();
}
这是对的FormClosing事件,所以线程停止。
stopAndDie = true;
saver.Join(2000);
timer1.Stop();
当我运行程序和我点击保存按钮时,收到在SaveFileDialog线(if (SaveDoc.ShowDialog() == DialogResult.OK)
)的误差。这里是我收到该错误。
你打算发布错误吗?您也可以尝试将其包装起来,以便进一步查看错误消息。 – Prix
我猜你正在获得交叉线程异常?这将是最好的,如果你发布错误,你正在 – Viru
@Viru刚刚添加图片。 – Kayla