0
コンソールの別の場所にメッセージを表示したいのですが、カーソル位置を左上50、上60に設定しようとすると、別の場所にあるコンソールにメッセージを表示している別のスレッド「th」があるため、「A」、「B」を印刷してください。また、Cursorプロパティの左と上にもアクセスしています。 私はMan()関数がカーソル位置を設定するときに、その時点で他のスレッドはそれを変更しません。Consoleクラスのプロパティをロックすることで、一度に1つのスレッドだけがアクセスできます
static void Main(string[] args)
{
Thread th = new Thread(() => new Program().Hello(50, 60));
th.Start();
new Program().Man();
}
public void Hello(int left, int top)
{
int i = 0;
Console.CursorLeft = left; Console.CursorTop = top;
Console.ForegroundColor = ConsoleColor.DarkGreen;`
Console.Write("Processing");
while (true)
{
i = 0;
Console.ForegroundColor = ConsoleColor.DarkGreen;
while (i < 20)
{
Console.Write("*");
i++;
}
Console.ForegroundColor = ConsoleColor.Black;
Console.Write("********************");
}
}
public void Man()
{
Console.CursorLeft = 50;
Console.CursorTop = 60;
Console.Write("A");
Console.Write("B");
Console.Write("C");
Console.Write("D");
}
ここでは正確に何を達成しようとしていますか? –
コンソールの別の場所にメッセージを表示したいのですが、カーソル位置を50,60に設定しようとすると、メッセージが表示されている別のスレッドがあるため、 'A'、 'B'別の場所にコンソール。 Man()がカーソルの位置を設定するときに、他のスレッドはそれを変更しません。 –
CursorLeftの位置を2回(最初は50に設定してから60に設定する)、これが問題の原因になる可能性がありますか? – BlueStrat