我知道这个问题已被回答了一千次,但我仍然无法让这些功能同时发挥作用。这是我的代码:
static void Main(string[] args)
{
a();
a();
}
static void a()
{
string sampleString = "a";
Console.WriteLine(sampleString);
for (int i = 0; i < 10; i++)
{
System.Threading.Thread.Sleep(TimeSpan.FromSeconds(0.1));
Console.SetCursorPosition(0, Console.CursorTop -1);
sampleString = " " + sampleString;
Console.WriteLine(sampleString);
}
}
该函数只写字母'a',0.1秒后在其后面添加一个空格,并不复杂。功能结束后,它再次做同样的事情。我希望两个函数同时工作,第一行中的第一个函数和第二行中的第二个函数。 提前谢谢。
答案 0 :(得分:2)
您可以使用Parallel
类:
static void Main(string[] args)
{
Parallel.Invoke(a,a);
}
您的功能将同时运行。
答案 1 :(得分:0)
一个简单的解决方案是创建两个线程,启动它们并等待它们完成。针对您的具体问题:
static void Main(string[] args)
{
var t1 = new Thread(a); t1.Start();
var t2 = new Thread(a); t2.Start();
t1.Join(); t2.Join();
}
但是,当然,这并没有解决你的初始问题,写入控制台的不同行,因为a
函数不知道,要写入哪一行。您可以通过添加带行号的参数来解决此问题。
此外,您必须通过锁保护您的控制台输出,因为它是多个源将数据写入的单个目标,如果未正确同步,可能会导致不一致。所以我真的建议你阅读一些关于多线程的教程。