2009-05-22 8 views
0

私には2つの質問があります。 1.ワークフロークラスが「SEALED」クラスの理由は何ですか?ワークフローを継承するのは悪い習慣ですか? 2. whileアクティビティが遅いです。 IE: 私がこの順でseqential WFに3つの活動を置く... Code_activity1 While_activity Code_activity2MS Workflow Foundationの継承とアクティビティ中


Code_activity1は(whileアクティビティ内) - 33320. While_activityにint型のカウンタを設定します - カウンタが0になるまでループします。 Code_activity2 - カウンタを1ずつ減らします(counter--)。

問題は、ワークフロー全体(約20分)を実行するには時間がかかりすぎるということです。

私はコードに手で同じことを行う場合:,

int counter = 33320; 
while(counter>0) 
    counter--; 

それは、約1ミリ秒かかります。

なぜ活動が遅いのですか?生成されたクラスは

public sealed partial class Workflow1: SequentialWorkflowActivity 

何ものように封入されているにもかかわらず

おかげ

答えて

0

1)は、実際に密封されたキーワードを削除してからあなたを停止し、それを継承しています。あなたは通常、あなたが設計したワークフローから継承したくないと思うし、封印はあなたにいくつかのパフォーマンス上の利点を与えると言われています。

2)http://msdn.microsoft.com/en-us/library/ms735819.aspxは、前述の子アクティビティの作成回数を33320回追加し、アクティビティの実行/初期化などのすべてのイベントと、ワークフローランタイムが処理する必要があるすべての追加作業を追加して20分を追加します。