标题:使用多线程时出错,求指教!
只看楼主
炫色流年
Rank: 2
等 级:论坛游民
帖 子:61
专家分:18
注 册:2011-8-8
结帖率:38.46%
已结贴  问题点数:20 回复次数:6 
使用多线程时出错,求指教!
程序代码:
      
namespace Thread
{
    public partial class Thread : Form
    {
        public Thread()
        {
            InitializeComponent();
        }

//=================================以下部分为两个线程(Add,,Div)所要做的事======================================
        public static void Add()
        {
            int sum = 0;
            for (int i = 1; i <= 100; i++)
            {
                sum += i;
                Console.WriteLine("Addtion:i=" + i + "   sun=" + sum);
            }
        }

       
        public static void Div()
        {
            int sum = 5050;

            for (int i = 1; i <= 100; i++)
            {
                sum -= i;
                Console.WriteLine("Divistion:i=" + i + "   sum=" + sum);
            }
        }


 //=================================以上部分为两个线程的运算===============================      
        

//=================================以下为出错部分=======================================

       private void Thread_Load(object sender, EventArgs e)
        {
            Thread Add = new Thread(new ThreadStart(Add));
            /*错误1    “Add”是“变量”,但此处被当做“方法”来使用
            错误    2 “Thread.Thread”不包含采用“1”个参数的构造函数   
             */
           
            Thread Div = new Thread(new ThreadStart(Div));
            /*错误3    “Div”是“变量”,但此处被当做“方法”来使用
            错误    4    “Thread.Thread”不包含采用“1”个参数的构造函数
             */
        }

        private void Start_Click(object sender, EventArgs e)
        {
            try
            {
                Add.Start();//错误5 “Thread.Thread.Add()”是一个“方法”,这在给定的上下文中无效

                Div.Start();//错误6 “Thread.Thread.Div()”是一个“方法”,这在给定的上下文中无效

            }
           
            catch (ThreadStateException)
            {
                Console.WriteLine("The thread has alread been startsd.");
            }
        }
//=====================================以上为出错部分===================================
  
     }

}
第一次使用多线程,请高手帮帮忙,改正错误。
谢谢!
搜索更多相关主题的帖子: color 多线程 public 
2012-01-18 21:12
炫色流年
Rank: 2
等 级:论坛游民
帖 子:61
专家分:18
注 册:2011-8-8
得分:0 
程序代码:
//补充:::::::

private void Thread_Load(object sender, EventArgs e)//"Thread"为窗体的name

private void Start_Click(object sender, EventArgs e)//"Start"为一个按钮的name
2012-01-18 21:15
winners
Rank: 6Rank: 6
来 自:济南
等 级:侠之大者
威 望:1
帖 子:105
专家分:416
注 册:2009-3-20
得分:14 
1、定义的Thread实例与方法名重复
2、参数数目不对
3、定义的Thread实例在Button的Click中无效,你的Add是局部变量,不是全局的
2012-01-19 08:38
炫色流年
Rank: 2
等 级:论坛游民
帖 子:61
专家分:18
注 册:2011-8-8
得分:0 
能把正确的代码写出来吗?我是新手,刚学c#,很多名词听不懂。
谢谢了。
2012-01-19 12:45
炫色流年
Rank: 2
等 级:论坛游民
帖 子:61
专家分:18
注 册:2011-8-8
得分:0 
代码改了一下
程序代码:
using System;
using System.Collections.Generic;
using using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace Thread_Example
{
    public partial class Form1 : Form
    {
       
        public Form1()
        {
            InitializeComponent();
        }

        //=================================以下部分为两个线程(Add,,Div)所要做的事======================================
        public static void Addition()
        {
            int sum = 0;
            for (int i = 1; i <= 100; i++)
            {
                sum += i;
                Console.WriteLine("Addtion:i=" + i + "   sun=" + sum);
            }
        }


        public static void Division()
        {
            int sum = 5050;

            for (int i = 1; i <= 100; i++)
            {
                sum -= i;
                Console.WriteLine("Divistion:i=" + i + "   sum=" + sum);
            }
        }

        //=================================以上部分为两个线程的运算===============================      


       

        private void Form1_Load_1(object sender, EventArgs e)
        {
            Thread AddThread = new Thread(new ThreadStart(Addition));
           
            Thread DivThread = new Thread(new ThreadStart(Division));
         
        }
  //=================================以下为出错部分=======================================
        private void Start_Click_1(object sender, EventArgs e)
        {
          
            try
            {
                AddThread.Start(); //错误1:当前上下文中不存在名称“AddThread”

                DivThread.Start();//错误2:当前上下文中不存在名称“DivThread”

            }

            catch (ThreadStateException)
            {
                Console.WriteLine("The thread has alread been startsd.");
            }
        }

        //=====================================以上为出错部分===============================
    }
}

怎样才能让Form_Load 和Start_click中的“AddThread,DivThread”互相通用??
能写下正确的代码吗?
谢谢各位大虾了。。

2012-01-20 23:29
winners
Rank: 6Rank: 6
来 自:济南
等 级:侠之大者
威 望:1
帖 子:105
专家分:416
注 册:2009-3-20
得分:0 
把它们定义成全局的,在Thread_load()外面定义
2012-01-21 22:14
炫色流年
Rank: 2
等 级:论坛游民
帖 子:61
专家分:18
注 册:2011-8-8
得分:0 
明白,谢谢。
2012-01-22 17:24



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-359852-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.065789 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved