3

私は ac# ライブラリ ファイルを作成しました。これは、たとえば (c:\test.txt) のローカル パスに移動し、ファイルを見つけて ftp サーバーにアップロードします。

テストのために、コンソール アプリから dll を呼び出しましたが、継続的に実行される Windows サービスとしてどのように実行できますか?

このdllをサービスとして実行して、「test.txt」のようなファイルがある場合はc:\フォルダーを監視してからアップロードすると思います。

前もって感謝します

4

2 に答える 2

6

DLL は、その関数を使用するときに「呼び出されます」。そのため、いくつかのクラスとクラス内のいくつかの関数を含む DLL プロジェクトがある場合は、単にDLL を参照としてサービス プロジェクトに追加し、適切な関数を呼び出します。

このライブラリを使用して、Windows サービスを作成することができます。その理由は、Visual Studio テンプレートを使用して Windows サービスをビルドすると、結果のビルドが実際には「実行」されないからです。結果のビルドは、サービス スナップインを使用してインストールしてから開始する必要がある Windows サービスです。ただし、Hoytsoft のカスタム Windows サービス ライブラリを使用すると、通常の Windows フォーム アプリケーションと同様に、サービスが自動的にインストールされてから自動的に開始されます。

Service が起動時に確実に実行されるようにするには、Service クラスを AutoStart に構成することを忘れないでください (CodeProject の記事で説明されています)。プロセスが強制終了された場合でも、サービスが継続的に実行されるようにするには、この便利なレジストリ ハックを追加して、再起動サービス フラグをすぐに再起動するように設定します。

このレジストリハック == ここに画像の説明を入力

レジストリハック:

Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Services\<YOUR_SERVICE_NAME_HERE>", true);
key.SetValue("FailureActions", new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 20, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 }, Microsoft.Win32.RegistryValueKind.Binary);
key.Close();

管理ユーザーは、サービスを無効にするだけでプロセスを強制終了できることを理解してください。

于 2012-02-25T01:06:32.043 に答える
0

ディレクトリ/ファイルへの変更を監視するには、 FileSystemWatcherクラスを確認してください。

于 2012-02-25T18:33:08.073 に答える