Я разрабатываю приложение, использующее многопоточность.thread is dead priority нельзя получить доступ
У меня есть поток, который производит некоторые данные каждые 200 мс (данные вибрации с устройства сбора данных). И каждый раз, когда я возвращаю данные, я запускаю несколько задач для работы. На моем компьютере разработки нет ошибки. Но когда я развертываю проект на менее мощном планшете, у меня появляется следующее сообщение, появляющееся несколько раз:
нить мертва. невозможно получить доступ к приоритету.
Вот мой код:
private void myCallback1Axis(IAsyncResult ar)
{
GC.Collect();
try
{
if (runningTask == ar.AsyncState)
{
data = reader.EndReadWaveform(ar); // GET THE DATA
// LAUNCH FFTs' THREADS
CancellationToken ct = cts.Token;
task1 = System.Threading.Tasks.Task.Factory.StartNew(() =>
{
try
{
if (ct.IsCancellationRequested)
{
Console.WriteLine("Task {0}: Cancelling", task1.Id);
return;
}
Console.WriteLine("Task {0}: {1}/2 In progress", task1.Id, 1);
ConsumeToFFT(new FFT_Parameters(data.GetRawData(), overlap1, (int)Fmax1,
NbLines1, HP, avg1, window1, switchFreqUnit1.Value, swVelo.Value));
}
catch (OperationCanceledException)
{
// Any clean up code goes here.
Console.WriteLine("Task {0}: Cancelling", task1.Id);
//throw; // To ensure that the calling code knows the task was cancelled.
}
catch (Exception)
{
// Clean up other stuff
//throw; // If the calling code also needs to know.
}
}, ct);
}
catch (DaqException ex)
{
MessageBox.Show(ex.Message);
runningTask = null;
myTask.Dispose();
}
}
Я читал, что я должен:
Положите вкручивается в фоновом режиме перед запуском (here)
Но больше ничего. Я застрял с этими сообщениями, и я не могу их проследить. Любые идеи, как я могу это исправить?
спасибо.
(я использую C#, Visual Studio, .NET 4.0)
Где в вашем коде используется свойство Thread.Priority. Вам нужно показать код между тем, что у вас есть, и этим вызовом. –
Кроме того, в вашем связанном отчете об ошибке, если вы прокрутите страницу вниз, вы увидите, что ошибка не имеет ничего общего с потоками, потому что программа не могла получить доступ к библиотеке libuv. –
@Scott Chamberlain Спасибо за ответ. Я не использую «Thread.Priority» в моем коде. –