gpt4 book ai didi

silverlight - 如何向 Silverlight 自定义控件添加后台线程?

转载 作者:行者123 更新时间:2023-12-01 11:55:47 25 4
gpt4 key购买 nike

我正在为 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 一直深受喜爱的问题。很想知道为什么。

最佳答案

看起来您在 OnApplyTemplate 方法中做了很多运行时的事情。

这将在 Blend 或 Visual Studio 实例化控件的设计 View 时调用。

您应该使用 DesignMode 检查您是否处于设计模式:

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

或者将此代码移动到仅在应用程序实际运行时调用的方法/事件处理程序中。

关于silverlight - 如何向 Silverlight 自定义控件添加后台线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7456574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com