C#线程错误

时间:2014-10-20 01:17:27

标签: c# multithreading

所以我试图创建一个汽车大都市。问题是如果我垃圾邮件,并点击应用程序停止垃圾邮件它只是冻结。我当时告诉我需要使用Threads。所以我读了一遍,这就是我想出来的:

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 tf2trade
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }
        public bool started = true;

        private void spam()
        {
            string test = text1.Text;
            Thread.Sleep(2000);
            while (started == false)
            {
                foreach (char c in test)
                {
                    SendKeys.Send(c.ToString());
                }
                SendKeys.Send("{ENTER}");
            }
        }

        Thread test = new Thread(spam);

        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void submit_Click(object sender, EventArgs e)
        {


            if (started == true)
            {
                started = false;
                submit.Text = "Stop";
                submit.Refresh();
                spam();
            }
            else 
            {
                started = true;
                submit.Text = "Start";
            }




        }
    }
}

现在这段代码给了我错误:

A field initializer cannot reference the non-static field, method, or property 'tf2trade.Form1.spam()'

我做错了什么? :(

提前致谢, 阿拉纳。

1 个答案:

答案 0 :(得分:1)

老实说,我不会浪费你的时间来解决这个错误。相反,请考虑使用现有方法之一在.NET中编写多线程应用程序。您使用的技术取决于您尝试解决的问题类型。对于简短/快速任务,请考虑使用:

  • 线程池
  • .net任务库

如果你正在创造一个" long"运行任务,你可以创建一个或多个本机线程,但我不建议这样做,直到你更好地了解你在做什么。有很多陷阱。例如,许多开发人员认为更多的线程等于更好的性能......这不是真的。

<强>参考