1

一連の関数を並行して実行する方法を理解し、それぞれをデバッグできるようにしたいと思います..

私は(コンパイルされた後)タスクスケジューラを介してアプリを実行するサーバー上で実行されるコンソールアプリケーションを作成しようとしています。

    static void Main(string[] args)
    {
        Task.Factory.StartNew(
            // first b. point here (will not "step into")
            () =>
                doFirstOne().ContinueWith(task => doSecondOne())
                ); 
    }

    public static IWebDriver AllDayWbDrvr;
    static string extrctdStr = "";

    public static void doFirstOne()
    { 
           // <<<<<<<----- brakePoint here  nothing steps in
        SeparatedClass.IeEnginGenerator IeNgn = new SeparatedClass.IeEnginGenerator();
         AllDayWbDrvr = IeNgn.ExtractPageContent(firstUrl....);

        var a = AllDayWbDrvr.FindElements(By.Id("anyID"));
        IWebElement IwbElm = IWebDrvRdonlyColl.ElementAt(1).FindElements(By.TagName("td"))[0];
        extrctedStr = IwbElm.Text;
        // plan is to append extracted text to one shared file that will log all results
        string fNm = @"C:\Inetpub\wwwroot\dolarRate.asp";
        File.WriteAllText(fNm, extrctdStr);

        AllDWbDrvr.Close();
        IeNgn.service.Dispose();

    }


    public static void doSecondOne()
    {
        SeparatedClass.IeEnginGenerator IeNgn = new SeparatedClass.IeEnginGenerator();
         AllDayWbDrvr = IeNgn.ExtractPageContent("secondURL....");

        var a = AllDayWbDrvr.FindElements(By.ClassName("WpBody"));
        IWebElement IwbElm = IeNgn.IWebDrvRdonlyColl.ElementAt(5).FindElements(By.TagName("td"))[1];
        extrctedStr = IwbElm.Text;
        string fNm = @"C:\Inetpub\wwwroot\anyOtherFile.asp";
        File.WriteAllText(fNm, extrctdStr);

        AllDWbDrvr.Close();
        IeNgn.service.Dispose();

    }
  1. それは関数をスレッド化/連結する方法ですか?
  2. 実行された doFirst() & doScond() コードに侵入するにはどうすればよいですか?
4

1 に答える 1

1

メインを終了してアプリケーションを終了する前に、タスクが完了するのを待つ必要があります。

次のようなものを試してください:-

Task.Factory.StartNew(doFirstOne).ContinueWith(task => doSecondOne()).Wait(); 
于 2012-11-20T20:44:55.803 に答える