我編寫了一個處理許多Visio文檔的Visio 2010加載項(在C#中)。在一個Ribbon1.button1_Click方法中,我調用一個新的線程(processVisioFiles),它處理一個大循環中的所有vsd文件(超過40分鐘)。當我關閉它時,Visio提示我保存文檔,儘管我只保存了它
public partial class Ribbon1
{
private ThisAddIn exportAddIn;
...
...
public Thread StartTheThread(DirectoryInfo startFolder, bool someVal)
{
var t = new Thread(() => exportAddIn.processVisioFiles(startFolder, false));
t.SetApartmentState(ApartmentState.STA);
t.Name = "processVisioFiles";
t.IsBackground = true;
t.Start();
return t;
}
private void button1_Click(object sender, RibbonControlEventArgs e)
{
//exportAddIn.processVisioFiles(startFolder, false);
StartTheThread(startFolder, false);
}
}
每次在以編程方式關閉Visio vsd文檔之前,我先執行document.Save(),然後執行document.Close()。儘管如此,它們還是很多文件(並非全部,但總是相同),這些文件提示我手動保存它們。
我必須說,我有沒有問題,手動保存文檔時,我開始大循環一個線程中與UI
private void button1_Click(object sender, RibbonControlEventArgs e)
{
exportAddIn.processVisioFiles(startFolder, false);
StartTheThread(startFolder, false);
}
但隨後則Visio中的UI凍結(「應用沒有響應「消息),並在一段時間後Visio中止通過所有文件的循環。
我測試,以保存document.SaveAs(...)和document.SaveAsEx(...)和
if(document.Saved == false)
{
document.Save();
}
document.Close();
,但結果是一樣的。每次同一個visio文件沒有保存並保持未保存狀態,UI會提示用戶手動保存或放棄更改。 如何以編程方式保存並關閉而不提示用戶手動執行此操作?
p.s.除此之外(當我處於調試模式時),我在document.Save()之後等待了一段時間,然後進入document.Close()行,但結果是一樣的。
大概一個錯字,但'documend.Saved'? – 2013-03-12 21:37:48
這是一個錯字,謝謝 – user615993 2013-03-13 22:20:07