Единственное, о чем вам нужно беспокоиться с точки зрения переключения контекста, это блокирование вашего потока. Таким образом, не должно быть никаких проблем с использованием LINQ (то есть LINQ-to-objects, очевидно, LINQ-to-SQL или чего-либо, что может включать блокировку!). Любые арифметические или вызывающие методы и т. Д. Также не будут блокировать поток и поэтому не будут влиять на переключение контекста.
Другая вещь, которая влияет на переключение контекста, - это, как вы заметили, приоритет. Но не только приоритет потока, но и приоритет вашего процесса. Вы можете использовать SetPriorityClass , чтобы увеличить приоритет вашего процесса до ABOVE_NORMAL_PRIORITY_CLASS
(я бы не стал ставить его выше этого значения), а затем также установить приоритет вашего потока выше Above Normal.
Однако в целом приоритеты действительно полезны только тогда, когда речь идет о синхронизации (то есть, чтобы ваш процесс реагировал на внешний ввод (сеть, ввод пользователя, дисковый ввод / вывод) так быстро насколько это возможно). На самом деле это будет очень мало влиять на фактическую пропускную способность вашего потока, если только у вас не запущены другие процессы, которые также связаны с процессором. Но если это так, то расставание с приоритетами в любом случае не будет жизнеспособным долгосрочным решением. Это потому, что вы обнаружите, что, установив один из процессов с более высоким приоритетом, он полностью истощит другие процессы, и они никогда не запустятся.
Так или иначе, я бы тщательно обдумал все перед тем, как настраивать потоки и приоритеты процесса. И, как всегда, тестируй, тестируй, тестируй!