请教c#的一个关于进程停止的问题。

来源:百度知道 编辑:UC知道 时间:2024/06/21 17:23:55
namespace Process
{
public partial class Form1 : Form
{
Thread td1;
Thread td2;
Thread td3;
int speed1 = 100;
int speed2 = 20;
int speed3 = 50;
public Form1()
{
InitializeComponent();
Form1.CheckForIllegalCrossThreadCalls = false;
}
private void Form1_Load(object sender, EventArgs e)
{
td1 = new Thread(new ThreadStart(main2));
td2 = new Thread(new ThreadStart(main3));
td3 = new Thread(new ThreadStart(main4));
}
public void main2()
{
try
{
for (int i = 0; i < 100; i++)
{
progressBar1.Value += 1;
Thread.Sleep(speed1);
}

朋友你的问题问的很好,如果线程调用主窗体控件的话,是属于跨线程调用,要用到委托和Invoke 我把你的代码改了一下,里面加了委托和Invoke的使用,你可以把我写的代码复制到你那里,再看看效果,我已经改好了,运行已经没问题了。。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace Process
{
public partial class Form1 : Form
{
Thread td1;
Thread td2;
Thread td3;
int speed1 = 100;
int speed2 = 20;
int speed3 = 50;
public Form1()
{
InitializeComponent();
Form1.CheckForIllegalCrossThreadCalls = false;
}

private delegate void mydelegate1();

private void Form1_Load(object sender, EventArgs e)
{
td1 = new Thread(new ThreadStart(main2));