對不起,沒有多線程經驗。通常我可以有效的谷歌找到我的答案,但我堅持這一個。停止一個已啓動的線程方法循環C#
我知道我可以在這裏使用背景工作,但爲了學習,我想知道如何以及如果這可以手動完成?
只是試圖啓動一個按鈕按鈕上的線程,它運行一個方法循環來向gui打印文本,但無法弄清楚如何阻止這個線程運行。從我能拿起的東西,Thread.Abort不是一個好辦法嗎?
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;
namespace ThreadStopping
{
public partial class Form1 : Form
{
public bool isRunning;
private static Thread neh;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
StartThread();
}
private void button2_Click(object sender, EventArgs e)
{
StopThread();
}
private void StartThread()
{
neh = new Thread(Running);
neh.Start();
isRunning = true;
}
private void StopThread()
{
isRunning = false;
}
private void runningText(int value)
{
if (this.InvokeRequired)
Invoke(new runningTextDelegate(runningText),value);
else
label1.Text = value.ToString();
}
delegate void runningTextDelegate(int value);
void Running()
{
while (isRunning)
{
for (int i = 0; i < 1000000; i++)
{
runningText(i);
}
}
}
}
}
不知道從哪裏開始,但是如果您單擊button1兩次,IsRunning和keepRunning兩種不同的動物,會發生什麼情況會出現錯誤。 –
可能重複http://stackoverflow.com/questions/1865574/how-to-cancel-a-thread – wdosanjos
Tony:在Start&Stop中添加了bool選項來停止它運行兩次。 thread.abort做了我在這之後的事情,所以我想我會繼續下去,直到遇到問題。 – horseman1210