2

ftp ログを監視する win サービスを作成しています。ファイルがアップロードされたときに、powershell スクリプトなどの外部アプリケーションを起動して、ファイルを操作したいと考えています。私の質問は、私がそれを行うときにこれを別のスレッドにスピンオフしたいのですか、それともそれが終了するまで待ってから先に進むべきですか.

このプロセスはすでにスレッド化されており (サービスは複数のサーバーを監視する予定です)、スレッドがスレッドを開始するという考えが気になります。これは心配すべきことですか、それとも私の帽子にアルミ箔が多すぎる場合です.

4

4 に答える 4

2

モジュール方式でコーディングすれば、スレッドについて心配する必要はありません。将来的に、アプリケーションがマルチスレッド アプローチの恩恵を受けることがわかった場合は、それに対処してください。コンポーネントを直角に構築した場合、スレッド部分はより自然にフィットします。

アプリケーションの最初の段階でスレッドの問題に対処することは、私にとっては時期尚早の最適化のように常に感じられます。最初にコンポーネントを構築し、後でそれらをスレッド化する方法について心配します。

[編集] スレッド化についてまったく考えないようにアドバイスしているわけではありません。すべてのコンポーネントは、複数のスレッドで使用できるように構築する必要があります。これは、すべてのアプリケーションで防御的でインテリジェントな方法です。つまり、アプリケーションがスレッドを処理する方法や、最初にアプリケーションのスレッド管理をセットアップする方法については、それほど心配する必要はありません。

于 2009-02-05T18:19:44.350 に答える
1

少しトピックから外れていますが、PowerShell スクリプトを起動するとおっしゃっていたので、PowerShell の「実行空間」を介してインプロセスでスクリプトを実行するオプションを指摘したいと思います。最小限の例を次に示します。

using System.Management.Automation;
static class PoshExec
{
    static void Exec(string scriptFilePath)
    {
        (new RunspaceInvoke()).Invoke("& " + scriptFilePath);
    }
}

c:\Program Files\Reference Assemblies\Microsoft\WindowsPowerShell\v1.0\System.Management.Automation.dll への参照を追加します。

于 2009-02-05T18:58:30.887 に答える
1

もっと重要な質問は、別のスレッドを生成することで何が得られるかということだと思います。コードを並行して実行する必要がない場合は、実行しないでください。であれば、問題はないはずです。子スレッドが独自のスレッドを作成することに関心がある場合は、スレッドの作成をThreadPool.

于 2009-02-05T18:19:49.887 に答える
1

主な質問: そのプロセスの結果を知る必要がありますか? 発砲して忘れることができる場合は、それを実行してください-それは簡単です. 結果が必要な場合は、それを待ちます。

また、FileSystemWatcher の使用を検討しましたか? リモートで動作します。

于 2009-02-05T18:21:37.873 に答える