您需要在其他線程或任務
像這樣運行:通過這個代碼
Task task = new Task(() => { /* your code */ });
task.Start();
你的應用永遠不會停止,但不要忘了在UI參數改變你需要調用
this.Invoke(new Action(() => { /*your code*/ }));
更多信息看這個鏈接:
https://www.dotnetperls.com/async
https://www.codeproject.com/Articles/189374/The-Basics-of-Task-Parallelism-via-C
更新
和加速你的代碼是很好用的Parallel.For。 whach此鏈接
http://www.dotnetcurry.com/csharp/608/csharp-parallel-for-loop-method`
using System;
using System.Threading;
using System.Threading.Tasks;
namespace ParallelFor
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Using C# For Loop \n");
for(int i=0; i <=10; i++){
Console.WriteLine("i = {0}, thread = {1}",
i, Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(10);
}
Console.WriteLine("\nUsing Parallel.For \n");
Parallel.For(0, 10, i =>
{
Console.WriteLine("i = {0}, thread = {1}", i,
Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(10);
});
Console.ReadLine();
}
}
}`
在Windows窗體中,你可以使用'BackgroundWorker'做後臺任務而不阻塞UI。 –
不要忘記接受我的回答;-) –
'已停止工作'是因爲主窗口的消息隊列未處理。這是因爲gui線程正在執行for循環。像@ AlessandroD'Andria說的那樣,使用[BackgroundWorker msdn](https://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker(v = vs.110).aspx#Examples)。或[BackgroundWorker教程](https://www.dotnetperls。com/backgroundworker) –