problem med multi threading
Hej Eksperten,Jeg er helt ny når det kommer til multi trådning men er begyndt at lege med det men jeg er stødt ind i et problem, jeg ved ikke hvad problemet ligger i men jeg har neden stående kode men hvis jeg køre den fryser winform'en og der sker ingen ting ?? Er der nogle der kan hjælpe!!
public partial class Form1 : Form
{
public Queue<string> queue = new Queue<string>();
public bool isRunning = true;
int ActivThreads = 0;
string Info = "";
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
for (int x = 0; x < 1000; x++)
{
queue.Enqueue(x.ToString());
}
}
private void button1_Click(object sender, EventArgs e)
{
timer1.Enabled = true;
allSiteUrls.Add(SendUrl);
int i = 0;
while (isRunning)
{
Thread thread = new Thread(new ThreadStart(this.ThreadWork),1024);
thread.IsBackground = true;
thread.Name = "My Worker " + i;
thread.Start();
i++;
}
}
public void ThreadWork()
{
sting isQ = ""
lock (queue)
{
if (queue.Count > 0)
{
if (ActivThreads < 4)
{
isQ = queue.Dequeue();
SomeWork(isCrawlUrl, Thread.CurrentThread.Name);
ActivThreads++;
}
else
{
Thread.Sleep(25);
}
}
else
{
isCrawling = false;
}
}
}
public void SomeWork(string isQ,string Name)
{
Info += Name + "|" + isQ+ "\n";
}
private void timer1_Tick(object sender, EventArgs e)
{
if (isRunning)
{
label1.Text = Info;
}
else
{
label1.Text = "Threading end";
timer1.Enabled = false;
}
}
}