Обновление индикатора выполнения из потока в C #
public class Consumer
{
Queue queue;
Object lockObject;
public Consumer(Queue queue, Object lockObject)
{
this.queue = queue;
this.lockObject = lockObject;
}
public void consume(string filepath)
{
int item = 0;
while (true)
{
lock (lockObject)
{
if (queue.Count == 0)
{
Monitor.PulseAll(lockObject);
continue;
}
item = queue.Dequeue();
if (item == 0)
{
break;
}
//do some staff
}
}
}
}
public class Producer
{
Queue queue;
Object lockObject;
public int ProgressPercent = 0;
int TotalProducedElements = 0;
public bool check1 = false;
public Producer(Queue queue, Object lockObject)
{
this.queue = queue;
this.lockObject = lockObject;
}
private bool IsPrime(int num)
{
if (num == 0)
return true;
num = Math.Abs(num);
for (int i = 2; i c.consume(path));
Thread1.Start();
Thread2.Start();
progressBar1.Maximum = target;
while(true)
{
if(p.ProgressPercent==0)
{
Thread.sleep(1000);
}
else
{
progressBar1.Value=p.ProgressPercent;
}
}
}
У меня два класса работают в одной очереди. один для получения набора целых чисел, а второй - для использования этих целых чисел из очереди.
И во время всего этого я хочу обновить свой индикатор выполнения на этот процент. Так, как обновить индикатор выполнения от потребителя, не блокируя для моего GUI?
Обратите внимание, что я использовалprogressbar.Invoke
а такжеdelegate
но нет работа.