2

私は C# で DLL を作成していますが、特定の時間内に DLL の使用を制限する必要があります (したくありません)。

ユーザーに通知しながら、利用開始からN時間後に動作を停止してほしい。また、DLL が M 時間使用されていない場合は、使用も停止します (一種のキープアライブとして)。

DLL の関数の 1 つを呼び出す使用法。

例外を使用すると、常に DLL の可用性と衝突します (ブロックしたままにすることはできません)。

私は C# の使用経験があまりありません。

もちろん、私はWindowsコンピューターで実行していますが、変更が必要な場合は、そのコンポーネント(サービスパックなど)を簡単に変更できます。

ご協力いただきありがとうございます。

編集

わかりにくかったと思います。私が必要としているのは、DLL 内の関数の使用が終了したことをユーザーに通知することです。これにより、ユーザーは必要に応じてこれらの関数を再度初期化できます。DLL はアンロードされません。また、DLL 関数を使用するメイン プログラム プロセスに干渉したくありません。

4

1 に答える 1

1

タイマーを使用します。

System.Threading.Timer t = new System.Threading.Timer(End, null, N * 60 * 1000, Timeout.Infinite);

  private static void End(object state)
  {
     // Tell the user and end the program
  }

使用しない場合は、別のタイマーを使用します。

System.Threading.Timer t2 = new System.Threading.Timer(End, null, M * 60 * 1000, Timeout.Infinite);

「使用」が何を意味するのかわかりませんが、「使用」と見なされる関数では次のようにします。

 t2.Change(M * 60 * 1000, Timeout.Infinite);

プログラムを終了するには、次を使用できます。

Environment.Exit(0);

複数のスレッドがあるとゾンビが発生する可能性があるため、メインスレッド以外のすべてのスレッドがバックグラウンドであることを確認するか、それらを中止するか、単一で閉じてください。

これで、ユーザーにのみ通知したいことがわかりました...だから、私が提案するのは次を使用することです:

MessageBox.Show(this, "what message you want to give the user");
于 2013-08-20T06:57:20.357 に答える