2010-12-08 2 views
1

Ну я пытаюсь развернуть свою первую в истории Xbox 360 XNA игру, которая использует многопоточность, и я пытаюсь поставить нить на другую аппаратную нити с помощью функции Thread.CurrentThread.SetProcessorAffinity(), например, так: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

Где вы положить этот код? Из ошибок, которые вы получаете, похоже, что вы можете иметь это в объявлении пространства имен или класса, оно должно пройти в тело метода. – 2010-12-08 21:06:30

ответ

2

Я хотел бы сделать следующее:

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