私は、USING
ステートメントを利用してサーバー上のタスクスケジューラに接続し、「処理を実行する」クラスを作成しています。タスクの有効化/無効化、開始と停止など。おそらくデリゲートを使用してコードの再利用を改善したいのですが、どうすればよいかわかりません。これが私の現在のコードの一部です:
private static void StopRunningTask(string taskName, string hostName)
{
Regex regex = GetRegexForFindTask(taskName);
using (TaskService ts = new TaskService(hostName))
{
foreach (Task t in ts.FindAllTasks(regex, true))
{
if (t.Name.Equals(taskName, StringComparison.OrdinalIgnoreCase) && t.State == TaskState.Running)
t.Stop();
}
}
private static void RunTask(string taskName, string hostName)
{
Regex regex = GetRegexForFindTask(taskName);
using (TaskService ts = new TaskService(hostName))
{
foreach (Task t in ts.FindAllTasks(regex, true))
{
if (t.Name.Equals(taskName, StringComparison.OrdinalIgnoreCase) && t.State == TaskState.Ready)
t.Run();
}
}
private static void ChangeTaskEnabledState(string taskName, bool enabled, string hostName)
{
Regex regex = GetRegexForFindTask(taskName);
using (TaskService ts = new TaskService(hostName))
{
foreach (Task t in ts.FindAllTasks(regex, true))
{
if (t.Name.Equals(taskName, StringComparison.OrdinalIgnoreCase))
t.Enabled = enabled;
}
}
private static Regex GetRegexForFindTask(string taskName)
{
var regex = new Regex(string.Format(@"{0}", taskName), RegexOptions.IgnoreCase);
return regex;
}