第一步:打开控制台程序,在控制台程序中添加Winform程序,右键自己的项目点击添加
第二步:在winform中建立两个按钮分别线一和线程二
第三步:写winform端代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace conso_winform
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private bool IsTrue = false;
private void button1_Click(object sender, EventArgs e)
{
IsTrue = true;
Console.ForegroundColor = ConsoleColor.Green;
Task.Run(() =>
{
while (IsTrue)
{
Console.WriteLine("线程一开始执行" + DateTime.Now.ToString());
Thread.Sleep(500);
}
});
}
private void button2_Click(object sender, EventArgs e)
{
IsTrue = false;
AwaitEnd();
}
private Task<string> StartTimer()
{
Console.ForegroundColor = ConsoleColor.Red;
var t = Task.Run(() =>
{
{
while (true)
{
if (IsTrue == false)
return "线程二";
}
}
});
return t;
}
private async void AwaitEnd()
{
var res = await StartTimer();
Console.WriteLine("结束线程一,开启" + res + DateTime.Now.ToString());
}
}
}
第四步:执行效果如下,点击线程一,线程一开始连续执行,点击线程二,线程一挂起,在点击线程一按钮,线程一连续执行。主界面不会卡住