SharePoint でいくつかのタイマー ジョブを実行する小さなアプリに取り組んでいます。a を使用しforeach
てすべてのジョブをループして必要なジョブを選択するのではなく、Linq ステートメントを介して Guid で選択しようとしています。しかし、私はあまり運がありません。これが私がこれまでに持っているものです:
foreach (SPService service in centralAdmin.Farm.Services)
{
var traceJob =
from jobDefinition in service.JobDefinitions
where jobDefinition.Id == traceGuid
select jobDefinition;
SPJobDefinition jobInfo = traceJob as SPJobDefinition
Console.WriteLine(jobInfo.DisplayName);
}
編集私が受け取っているエラーは、「NullReferenceException」ですConsole.WriteLine(jobInfo.DisplayName)
LINQ ステートメントを使用するのはこれが初めてなので、何かを見逃していると確信していますが、何が間違っていたのかを理解できませんでした。そうしないと、 のどのプロパティSPJobDefinition
にもアクセスできないため、traceJob を as にキャストします。ヒントや指針をいただければ幸いです。SPJobDefinition
traceJob
Guid を検索するときに、列挙を編集しても結果が得られません。ただし、次のコードを実行すると:
foreach (SPJobDefinition jobDefinition in service.JobDefinitions)
{
if (jobDefinition.Id == traceGuid)
{
jobDefinition.RunNow();
Console.WriteLine(jobDefinition.DisplayName);
}
}
ジョブ定義の表示名である、私が期待するものを正確に引き戻します。これは、問題が Guid の障害や存在しないジョブにあるのではないことを示しているようです。