2

複数の色を含む文字列をコンソールに配置し、それが単一の WriteLine であるかのように実行するようにしたいと考えています。複数の書き込みが中断されたり、他のスレッドが同時に書き込みによって破損したりするのとは対照的です。

したがって、以下の投稿は正しい方向に進んでいるように見えましたが、コンソールに書き込んでいるすべてのコードを制御しているわけではありません。私のコードは、私が作成している dll に制限されているため、干渉する可能性のあるあらゆる場所にロックを配置することはできません。それがロックとスレッド化の理解の問題であれば、疑問の余地はありません。これは私のコードにロックがなくても可能ですか?

C#.NET のスレッド間でコンソールをロックするにはどうすればよいですか?

4

1 に答える 1

1

を使用して、既存の出力ストリームを独自の TextWriter に置き換えますConsole.SetOutカスタム テキスト ライターでは、いくつかのオブジェクトでコンソールへのアクセスを同期させてから、実際の標準出力に書き戻すだけでなく、同じオブジェクトでも同期できる必要があるヘルパー メソッドに何らかの手段を提供します。そのヘルパー メソッドが実行されているときはいつでも、残りのアプリケーションのコンソールへのアクセスをロックできます。

于 2013-09-19T14:11:04.907 に答える