C# 如何添加另一个消费者?
如何在我的程序中添加另一个消费者?我试过了,但没用。。。 我找到这篇文章,但它不是我需要的,因为我不需要锁。。。我需要不用上课之类的。就用我的代码。。请帮忙:)C# 如何添加另一个消费者?,c#,.net,C#,.net,如何在我的程序中添加另一个消费者?我试过了,但没用。。。 我找到这篇文章,但它不是我需要的,因为我不需要锁。。。我需要不用上课之类的。就用我的代码。。请帮忙:) private int-occupiedBufferCount=0; 私有int占用BufferCount2=0; int i=0; 私人空位制作人() { int how_mound_numbers=Convert.ToInt32(textBox3.Text); 使用(StreamWriter writer=newstreamwrit
private int-occupiedBufferCount=0;
私有int占用BufferCount2=0;
int i=0;
私人空位制作人()
{
int how_mound_numbers=Convert.ToInt32(textBox3.Text);
使用(StreamWriter writer=newstreamwriter(“random_skaiciai.txt”))
{
对于(i=0;i<多少个数字;i++)
{
监视。输入(此);
如果((占用的缓冲计数==1)| |(占用的缓冲计数2==1))
{
监视器。等等(这个);
}
++占用缓冲计数;
缓冲区=i;
随机rnd=新随机();
数字=i;
//数字=rnd.Next(nuo,iki);
writer.WriteLine(数字+“”);
prm=假;
fib=假;
监视器。脉冲(本);
监控。退出(本);
如果(isCanceled==true)
打破
}
writer.Close();
Set_p(kiek);
}
}
私有void Consumer1()
{
int how_mound_numbers=Convert.ToInt32(textBox3.Text);
使用(StreamWriter=newstreamwriter(“Primary_numbers.txt”))
{
而(我<多少个数字)
{
监视。输入(此);
如果((占用BufferCount==0))
{
监视器。等等(这个);
}
--占用缓冲计数;
如果(数字!=0)
如果(素数(数字)=真)
{
writer.WriteLine(数字+“”);
}
prm=真;
监视器。脉冲(本);
监控。退出(本);
如果(isCanceled==true)
打破
}
writer.Close();
}
}
私有void Consumer2()
{
int how_mound_numbers=Convert.ToInt32(textBox3.Text);
使用(StreamWriter=newstreamwriter(“fibon_Numbers.txt”))
{
而(我<多少个数字)
{
监视。输入(此);
如果((占用BufferCount2==0))
{
监视器。等等(这个);
}
--占用缓冲区2;
如果(数字!=0)
如果(isfibonaci(数字)==真)
writer.WriteLine(数字+“”);
监视器。脉冲(本);
监控。退出(本);
如果(isCanceled==true)
打破
}
writer.Close();
}
}
您似乎正在UI线程中执行CPU限制的工作。你不必那么做,我不明白你的意思?我认为解决这个问题很容易,因为只有一个消费者在工作。。。但与其他人不(
private int occupiedBufferCount = 0;
private int occupiedBufferCount2 = 0;
int i = 0;
private void Producer()
{
int how_much_numbers = Convert.ToInt32(textBox3.Text);
using (StreamWriter writer = new StreamWriter("random_skaiciai.txt"))
{
for (i = 0; i < how_much_numbers; i++)
{
Monitor.Enter(this);
if ((occupiedBufferCount == 1) || (occupiedBufferCount2 == 1))
{
Monitor.Wait(this);
}
++occupiedBufferCount;
buffer = i;
Random rnd = new Random();
numbers = i;
//numbers = rnd.Next(nuo, iki);
writer.WriteLine(numbers + "");
prm = false;
fib = false;
Monitor.Pulse(this);
Monitor.Exit(this);
if (isCanceled == true)
break;
}
writer.Close();
Set_p(kiek);
}
}
private void Consumer1()
{
int how_much_numbers = Convert.ToInt32(textBox3.Text);
using (StreamWriter writer = new StreamWriter("Primary_numbers.txt"))
{
while (i < how_much_numbers)
{
Monitor.Enter(this);
if ((occupiedBufferCount == 0))
{
Monitor.Wait(this);
}
--occupiedBufferCount;
if (numbers != 0)
if (prime_num(numbers) == true)
{
writer.WriteLine(numbers + "");
}
prm = true;
Monitor.Pulse(this);
Monitor.Exit(this);
if (isCanceled == true)
break;
}
writer.Close();
}
}
private void Consumer2()
{
int how_much_numbers = Convert.ToInt32(textBox3.Text);
using (StreamWriter writer = new StreamWriter("fibon_Numbers.txt"))
{
while (i < how_much_numbers)
{
Monitor.Enter(this);
if ((occupiedBufferCount2 == 0))
{
Monitor.Wait(this);
}
--occupiedBufferCount2;
if (numbers != 0)
if (isfibonaci(numbers) == true)
writer.WriteLine(numbers + "");
Monitor.Pulse(this);
Monitor.Exit(this);
if (isCanceled == true)
break;
}
writer.Close();
}
}