2

長時間実行されているSharePointタイマージョブがあり、その進行状況を集中管理で表示したいと思います(したがって、SPJobDefinition.UpdateProgress(int percentage)メソッドを使用しています)。

foreachループで更新したいリストに50000個の要素があるとしましょう。ループのようなものを配置job.UpdateProgress((int) itemNo / itemCount)した場合、メソッドが呼び出されるたびに(50 000回)、またはパーセンテージが実際に変更された場合(100回以下)にのみ、SharePointサーバーにWeb要求を送信しますか?

このため、パフォーマンスが著しく低下することは望ましくありません。リクエストが増えると、ジョブの速度が低下する可能性があります。

また、要求と応答を確認するのに適したツールはどれですか(Fiddler?またはSharepointには他の何かが適していますか?)。

4

1 に答える 1

2

(SP2010の場合)job.UpdateProgressを呼び出すたびに、SPJobDefinitionクラスはSPRequestを送信します。SPJobDefinitionは、その完了率を内部的に追跡しないため、サーバーに接続しない限り、新しいintが更新であるかどうかを知る方法がないため、サーバーに接続するだけです。そうです、これを50000回呼び出すと、コードの速度が大幅に低下する可能性があります。

このようなものを理解する最も簡単な方法は(オンラインのMSDNドキュメントが非常にまばらな場合があるため)、Microsoft.SharePoint.dllで.Netリフレクターを使用することです。個人的にはilSpyを使う傾向があります。

于 2012-08-21T16:43:30.887 に答える