1
0
Fork 0
mirror of https://github.com/Radarr/Radarr synced 2025-02-27 16:42:46 +00:00

Fixed mono fix by checking if the Enum value exists in the runtime.

This commit is contained in:
Taloth Saldono 2014-06-08 09:50:29 +02:00
parent 5b5cc48549
commit 052a3bf47e

View file

@ -81,11 +81,18 @@ public Command PublishCommandAsync<TCommand>(TCommand command) where TCommand :
// For now we use TaskCreationOptions 0x10, which is actually .net 4.5 HideScheduler. // For now we use TaskCreationOptions 0x10, which is actually .net 4.5 HideScheduler.
// This will detach the scheduler from the thread, causing new Task creating in the command to be executed on the ThreadPool, avoiding a deadlock. // This will detach the scheduler from the thread, causing new Task creating in the command to be executed on the ThreadPool, avoiding a deadlock.
// Please note that the issue only shows itself on mono because since Microsoft .net implementation supports Task inlining on WaitAll. // Please note that the issue only shows itself on mono because since Microsoft .net implementation supports Task inlining on WaitAll.
if (Enum.IsDefined(typeof(TaskCreationOptions), (TaskCreationOptions)0x10))
{
_taskFactory.StartNew(() => ExecuteCommand<TCommand>(command)
, TaskCreationOptions.PreferFairness | (TaskCreationOptions)0x10)
.LogExceptions();
}
else
{
_taskFactory.StartNew(() => ExecuteCommand<TCommand>(command) _taskFactory.StartNew(() => ExecuteCommand<TCommand>(command)
, TaskCreationOptions.PreferFairness) , TaskCreationOptions.PreferFairness)
// This breaks on systems that don't have .Net 4.5 installed (but works fine when it does, even though we are targetting 4.0)
// , TaskCreationOptions.PreferFairness | (TaskCreationOptions)0x10)
.LogExceptions(); .LogExceptions();
}
return command; return command;
} }