Может ли кто-нибудь помочь мне в этом:
private Thread workerThread;
private EventWaitHandle waitHandle;
if (workerThread == null)
{
workerThread = new Thread(new ThreadStart(Work));
workerThread.Start();
//workerThread.Join();
}
else if (workerThread.ThreadState == ThreadState.WaitSleepJoin)
{
waitHandle.Set();
}
private void Work()
{
while (true)
{
string filepath = RetrieveFile();
if (filepath != null)
ProcessFile(filepath);
else
// If no files left to process then wait
waitHandle.WaitOne();
}
}
private void ProcessFile(string filepath)
{
XMLCreation myXML = new XMLCreation();
myXML.WriteXml(filepath, XMLFullFilePath);
}
private string RetrieveFile()
{
if (workQueue.Count > 0)
return workQueue.Dequeue();
else
return null;
}
посмотри, как все это работает.
У меня есть событие filewatcher, которое срабатывает только тогда, когда в эту папку добавляется новый файл, теперь проблема в том, что это небольшая часть более крупного приложения, и когда запускается средство просмотра файлов, возникает другой процесс, который обращается к этому файлу, и я ошибка, как этот файл используется другим процессом. поэтому я попытался реализовать с помощью потоков, но с помощью приведенного выше кода только некоторые файлы обрабатываются, но в журнале я вижу, что все файлы обрабатываются. Это правильный способ сделать это, или я что-то упускаю в этом
спасибо в Adv.