マウスの設定を変更するコンソールアプリを作っています。
IChromaインスタンスを消してしまうと設定が変わってしまうので、Mainメソッドの最後で待機できるメソッドが必要です。
ConsoleクラスのReadLineメソッドより軽量なメソッドがあったら教えてください、PCが起動してから終了するまで起動するので軽量なメソッドを使用したいです。
よろしくお願いいたします。
コンソールアプリなのでawaitする必要はないのですが、VSが警告を出してきて見栄えが良くないのでRunメソッドを使っています、ここには突っ込みなしてお願いします。
C#
1class Program 2 { 3 static IChroma chroma; 4 static MouseStatic mouseStatic = new MouseStatic(Led.None, Color.Black); 5 6 static void Main(string[] args) 7 { 8 Task.Run(async () => 9 { 10 await Init(); 11 await chroma.Mouse.SetStaticAsync(mouseStatic); 12 }); 13 Console.ReadLine(); 14 } 15 16 static async Task Init() 17 { 18 chroma = await ColoreProvider.CreateNativeAsync(); 19 } 20 }
ReadLine で重いという意味がわかりません。
何をもってReadLineが「重い」と判断されているのでしょうか。コンソールアプリがアクティブであるときにENTER('\n')入力があるまではCPU使用率がほぼ0で、実用上問題無いはずですが。>質問者さん
何が問題なのか、明記してください。
限りなく0に近いのですが、ゲームをするときに快適になるように軽量を追い求めているので、より軽量なメソッドを探しています。
ReadLineメソッドはループを回して文字列を取得しているので、より軽量なメソッドがあるのではないかと思って質問しました。
public virtual string ReadLine()
{
StringBuilder stringBuilder = new StringBuilder();
int num;
for (;;)
{
num = this.Read();
if (num == -1)
{
goto IL_43;
}
if (num == 13 || num == 10)
{
break;
}
stringBuilder.Append((char)num);
}
if (num == 13 && this.Peek() == 10)
{
this.Read();
}
return stringBuilder.ToString();
IL_43:
if (stringBuilder.Length > 0)
{
return stringBuilder.ToString();
}
return null;
}
なぜ自作の ReadLine を使うんでしょう。Console.ReadLine を使ってください。
ちなみに
http://ryuichi111std.hatenablog.com/entry/2017/08/15/153804
自作のReadLineではありません、逆コンパイルしたReadLineです。
それなら Read() で待機するので大丈夫です。
Mainメソッドにasyncをつけることができるのですね、Runメソッドの使用をやめて、C#7.1に変更しました。ありがとうございます。
回答1件
あなたの回答
tips
プレビュー