以下を実行するとwhile
ループが終わらない。ここでは while ループ条件の値を取得するメソッドを呼び出しています。私が間違っていることを教えてください。
using System;
using System.Linq;
using System.Activities;
using System.Activities.Statements;
using System.IO;
namespace BuildActivities
{
public sealed class CheckFile : CodeActivity
{
public InArgument<string> DirectoryName;
protected override void Execute(CodeActivityContext context)
{
Activity workflow = new Sequence
{
Activities =
{
new While
{
Condition = GetValue() ,
Body = new Sequence
{
Activities = {
new WriteLine
{
Text = "Entered"
},
new WriteLine
{
Text = "Iterating"
},
new Delay
{
Duration = System.TimeSpan.Parse("00:00:01")
}
}
}
//Duration = System.TimeSpan.Parse("00:00:01")
},
new WriteLine()
{
Text = "Exited"
}
}
};
try
{
WorkflowInvoker.Invoke(workflow, TimeSpan.FromSeconds(30));
}
catch (TimeoutException ex)
{
Console.WriteLine("The File still exist. Build Service has not picked up the file.");
}
}
public bool GetValue()
{
bool matched = false;
matched = File.Exists(@"\\vw189\release\buildservice\conshare.txt");
return matched;
}
}
}
コードが実行されると、while 条件を 1 回だけチェックしていると思います。なぜなら、私はそれがどのように機能するかを確認するためにいくつかの書き込み行を書いたからです。ループが終わらないことがわかります。ループの実行中にフォルダー内のファイルを削除して、これをテストします。5 秒ごとにファイルを選択するサービスがあります。これは、そのサービスが稼働しているかどうかを判断するためのものです。