C# 方法调用的块控制台输出
我在做类似的事情C# 方法调用的块控制台输出,c#,multithreading,C#,Multithreading,我在做类似的事情 interface ICalculable { public int Calculate(int input); } BigMethod(ICalculable calculable) { Console.Write("Sequence:"); for (int i = 0; i < 3; i++) { int result = calculable.Calculate(i); Console.Write(
interface ICalculable
{
public int Calculate(int input);
}
BigMethod(ICalculable calculable)
{
Console.Write("Sequence:");
for (int i = 0; i < 3; i++)
{
int result = calculable.Calculate(i);
Console.Write($" {i}:{result}");
}
}
控制台上看到的输出应该是
Sequence: 0:0 1:0 2:0
BigMethod
应该能够以某种方式使其对Calculate
的调用静音
有办法吗
我已经考虑过使用
StringBuilder
,但我希望BigMethod
的输出可以流化。您可以使用,并且
输出
Hello there
然而,这似乎有点可疑/XY,如果您正在线程化,则容易出现异常奇怪的结果。请稍等,那么您想用
控制台做什么代码>?所以你永远不想让它显示?@TheGeneral我永远不想让它显示,IRunnable#Run
中的某些内容不应该写入控制台。你想要的是async
或后台处理之类的内容,但是你声明BigMethod的输出不应该被中断?如果你不想让它显示为什么你想让它成为参数?尝试重定向流是的,我决定什么都不做,信任用户。不管怎样,如果事情出了问题,他们的问题就来了
public static void Main()
{
Console.Write("Hello ");
// current output
var current = Console.Out;
// change the output to somewhere else
Console.SetOut(new StreamWriter(Stream.Null));
Run();
// revert back
Console.SetOut(current);
Console.WriteLine("there");
}
private static void Run()
{
Console.Write("Doctor, please keep touching me ");
}
Hello there