SetProcessorAffinity дает мне проблемы - PullRequest
1 голос
/ 09 декабря 2010

Что ж, я пытаюсь развернуть мою первую игру для Xbox 360 XNA, которая использует многопоточность, и я пытаюсь создать поток в другом аппаратном потоке, используя функцию Thread.CurrentThread.SetProcessorAffinity(), например:

#if XBOX360

        Thread.CurrentThread.SetProcessorAffinity(new int[] { xbox360UpdateThread });
        Thread.CurrentThread.IsBackground = true;
#endif

Я также пробовал это:

#if XBOX

        Thread.CurrentThread.SetProcessorAffinity(new int[] { xbox360UpdateThread });
        Thread.CurrentThread.IsBackground = true;
#endif

Компилятор дает мне проблему с скобками где-то в первой инструкции выше. В VS2008 все скобки подчеркнуты этими красными маркерами, и я получаю следующие ошибки:

error CS1519: Invalid token '(' in class, struct, or interface member declaration
error CS1519: Invalid token '{' in class, struct, or interface member declaration
error CS1519: Invalid token '}' in class, struct, or interface member declaration
error CS0116: A namespace does not directly contain members such as fields or methods

если я скрываю всю указанную выше директиву о потоках, и я компилирую и запускаю свою игру на Xbox 360 .. Только эта директива о потоках вызывает проблему ..

Кто-нибудь знает, что я делаю не так? Я использую XNA 3.1, а не 4.0 ..

1 Ответ

2 голосов
/ 09 декабря 2010

Я бы сделал следующее:

#if XBOX360 
    // We can not use threads 0 or 2   
    int[] xbox360UpdateThread = new int[] { 4 }; 
    Thread.CurrentThread.SetProcessorAffinity(xbox360UpdateThread); 
    Thread.CurrentThread.IsBackground = true; 
#endif 
...