У меня есть приложение WinForms, и я ищу способ сделать следующее:
- Нажмите ссылку, чтобы создать документ Word из BLOB-объекта в базе данных и открыть его.
- Блокируйте приложение WinForms, пока Word не закроется.
- Обрабатывать при закрытии Word, проверять, был ли документ изменен, и сохранять изменения в базе данных.
Проблема, с которой я сталкиваюсь, заключается не в том, чтобы создать документ Word и открыть его, а в том, чтобы процесс Word знал, когда Word закрылся. Есть ли какие-нибудь библиотеки, чтобы посмотреть на выполнение этого или какие-либо учебные пособия, которые покажут, как выполнить эту задачу?
Пожалуйста, ознакомьтесь с принятым решением, но вот код, который я использовал для выполнения своей задачи:
protected static string FilePath { get; set; }
public static void DisplayDocument(byte[] documentBytes, string filePath)
{
FilePath = filePath;
if (documentBytes == null) return;
if (!Directory.Exists(TEMP_FILE_DIRECTORY))
Directory.CreateDirectory(TEMP_FILE_DIRECTORY);
if (File.Exists(FilePath)) File.Delete(FilePath);
try
{
FileStream fs = new FileStream(FilePath, FileMode.Create);
fs.Write(documentBytes, 0, Convert.ToInt32(documentBytes.Length));
fs.Seek(0, SeekOrigin.Begin);
fs.Close();
ProcessStartInfo psi = new ProcessStartInfo(FilePath);
Process process = Process.Start(psi);
process.EnableRaisingEvents = true;
process.Exited += process_Exited;
process.WaitForExit();
}
catch (Exception e)
{
MessageHandler.Show(e.Message, Strings.ErrorOpeningFile);
}
}
private static void process_Exited(object sender, EventArgs e)
{
FileInfo fileInfo = new FileInfo(FilePath);
if(fileInfo.CreationTime.CompareTo(fileInfo.LastWriteTime) < 0)
Debug.WriteLine("File updated, perform database upload here.");
}