0

これは、C# プログラムでクリップボードの内容 (テキスト文字列) を設定する方法です。

Thread staThread3 = new Thread(
delegate()
{
    try
    { new SetClipboardHelper(DataFormats.Text, s).Go();}
    catch (Exception ex)
    {
         threadEx = ex;
    }
});
staThread3.SetApartmentState(ApartmentState.STA);
staThread3.Start();
staThread3.Join();    

質問: これはクリップボードを設定する安全な方法ですか、それともこのコードは他のアプリケーションのクリップボードをまだロックしていますか? 次のようなステートメントを追加する必要があるのでしょうか

staThread3.Abort();

==編集==

コメントに基づいて、質問を正確にしたいと思います。他のアプリがクリップボードをより安全に使用できるようにするために、コードに追加できるものはありますか。このリソースを他のアプリ用に解放するために、CloseClipboard のようなものを探しています。

4

1 に答える 1

0

クリップボードを排他的に使用する時間を最小限に抑える必要があります。通常、開いて、クリアして、更新して、閉じます。その後、クリップボードは他のアプリで使用できるようになり、通常は更新に反応します (クリップボード ビューアーを実行している場合)。

スレッドで実行するとこれが遅くなったり、中断されやすい方法で実行されたりする場合 (たとえば、メイン スレッドのために)、スレッドで実行しないでください。

他のプログラムは「クリップボードを開けません」というエラーから身を守る必要がありますが、クリップボードを必要以上に長く開いたままにしないように注意する必要があります。

于 2013-03-12T20:16:07.023 に答える