[英]c# How to stop/pause execution before the next method call
我是C#的新手,希望對此有一些指導。 -我正在編寫一個程序,當將xml文件放入文件夾中時,該程序正在執行.bat文件,然后將xml文件移動到完成的目錄中。
問題是bat文件需要大約10秒鍾才能運行,並且要求目錄中存在XML文件,但是,我的move方法是在執行.bat file命令后立即移動xml文件,從而迫使.bat文件本身失敗。
經過研究,Thread.Sleep或Task.Delay將是答案,因為我只是想在.bat文件完成后暫停執行方法,然后執行movefile方法,但是我似乎無法掌握/讓執行停止在調用MoveFilesCompleted.MoveComp()之前持續很短的時間。
這是我所擁有的,但希望能提供任何建議。
private void _fileWatcher_Created(object sender, FileSystemEventArgs e)
{
FileInfo f = new FileInfo(e.FullPath);
if (f.Extension.Equals(".xml") || f.Extension.Equals(".XML"))
{
Logger.log(String.Format("File Created: Path: {0}, Name: {1}", e.FullPath, e.Name));
try
{
exBat.executeBAT();
}
catch (Exception ex)
{
Logger.log(String.Format("Running the XMLtoINF SQLload failed."));
}
Thread.Sleep(15000);
MoveFilesCompleted.MoveComp();
}
}
如果您發布了有關如何執行批處理文件的信息,那將真的有幫助!
否則請在這里檢查: 如何等待直到批處理文件完成
假設executeBAT
使用System.Diagnostics.Process
類啟動BAT文件,則可以通過調用Process.WaitForExit使其等待該進程退出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.