0
我需要執行每次顯示創建的文件名時間執行流觀看文件火災事件
WatchFilesActivity:NativeActivity的
protected override void Execute(NativeActivityContext context)
{
var fileSystemWatcher = new FileSystemWatcher(context.GetValue(Path));
fileSystemWatcher.IncludeSubdirectories = context.GetValue(IncludeSubdirectories);
fileSystemWatcher.Filter = context.GetValue(Filter);
var bookmark = context.CreateBookmark(ResumeFileCreatedBookmark);
context.GetExtension<FileSystemWatcherExtension>().Start(fileSystemWatcher, bookmark);
}
擴展
public class FileSystemWatcherExtension : IWorkflowInstanceExtension
{
WorkflowInstanceProxy instance;
Bookmark bookmark;
public void SetInstance(WorkflowInstanceProxy instance)
{
this.instance = instance;
}
IEnumerable<object> IWorkflowInstanceExtension.GetAdditionalExtensions()
{
yield break;
}
public void Start(FileSystemWatcher fileSystemWatcher, Bookmark bookmark)
{
this.bookmark = bookmark;
fileSystemWatcher.Created += new FileSystemEventHandler(FileCreated);
fileSystemWatcher.EnableRaisingEvents = true;
}
void FileCreated(object sender, FileSystemEventArgs e)//When the file arrives
{
instance.BeginResumeBookmark(bookmark, e.FullPath, CompleteResume, null);
}
void CompleteResume(IAsyncResult ar)
{
var result = instance.EndResumeBookmark(ar);
}
}
這工作很好,但只有一次,並在此之後主機關閉。
我不能把一個WhileActivity,因爲我需要處理連續的速度非常快文件創建和傳入文件的處理時間(顯示創建的文件名,在這種情況下)比文件的創建率
更大謝謝!
的最佳解決方案!我不會將其標記爲響應,因爲「顯示創建的文件名」必須由用戶輕鬆設置(在流程中),如圖中所示。我將嘗試將Watch Files作爲序列的複合活動,然後完成。任何幫助將受到歡迎。 –
如果使用ActivityAction它很容易使類似的ForEach活動所在的文件名顯示爲用戶自定義的變量名。點燃反射器,看看ForEach的內部,看看它有多簡單。 –
Maurice
我想讓流量用戶在WatchFiles之後拖動任何活動。 類似於: 'context.ScheduleActivity(*/next activity * /);' –