Как добавить фоновую тему в пользовательский элемент управления Silverlight? - PullRequest
3 голосов
/ 17 сентября 2011

Я создаю пользовательский элемент управления для Windows Phone 7+, который может выполнять обработку изображений дополненной реальности.Элемент управления прекрасно работает на практике (когда я запускаю приложение), но поскольку у меня обработка изображения выполняется в отдельном потоке, он прерывается, когда я пытаюсь открыть страницу в Blend или конструкторе Visual Studio.

Вот пример потока, который я пытаюсь запустить (в основном взято из http://msdn.microsoft.com/en-us/library/hh202982(v=vs.92).aspx):

public override void OnApplyTemplate()
{
    // assigning template stuff, initializing my camera

    _myManualResetEvent = new ManualResetEvent(true);
    _myCameraProcessingThread = new System.Threading.Thread(ProcessingMethod);
    _myCameraProcessingThread.Start();
}

void ProcessingMethod()
{
    int[] myBuffer = new int[640 * 480];
    while(_someCondition)
    {
        _myManualResetEvent.WaitOne();
        _myCamera.GetPreviewBufferArgb32(myBuffer);
        // do my processing stuff
        _myManualResetEvent.Set();
    }
}

. Это разрушает вечно любящего черта из Blend. Хотелось бы знать почему.1008 *

1 Ответ

5 голосов
/ 17 сентября 2011

Похоже, что вы выполняете много вещей во время выполнения в методе OnApplyTemplate.

Это будет вызвано, когда Blend или Visual Studio создадут представление дизайна вашего элемента управления.

Вы должны либо проверить, находитесь ли вы в режиме разработки, используя DesignMode:

if (!DesignMode)
{
    _myManualResetEvent = new ManualResetEvent(true);
    _myCameraProcessingThread = new System.Threading.Thread(ProcessingMethod);
    _myCameraProcessingThread.Start();
}

, либо переместить этот код в обработчик метода / события, который вызывается только тогда, когдаприложение на самом деле работает.

...