0

我对 .NET 编程非常陌生,并且我的代码面临一些问题(可能是微不足道的问题)。我正在开发一个用于在 WP8 上录制视频的演示应用程序。我需要在每帧捕获后进行回调。

我的代码如下:

private AudioVideoCaptureDevice captureDevice;

startcameraPreview()
{
    var res = AudioVideoCaptureDevice.GetAvailableCaptureResolutions(CameraSensorLocation.Back)[0];
    captureDevice = await AudioVideoCaptureDevice.OpenAsync(CameraSensorLocation.Back, res);
    captureDevice.PreviewFrameAvailable += new Windows.Foundation.TypedEventHandler<object, EventArgs>(VideoPreviewFrameAvailable);
    // NOTE: PreviewFrameAvailable is supposed to be a callback.
}

public void VideoPreviewFrameAvailable(object sender, EventArgs e)
{
     return;
}

在编译上述内容时,我收到错误:

No overload for 'VideoPreviewFrameAvailable' matches delegate 'Windows.Foundation.TypedEventHandler<object,System.EventArgs>'

请指导我如何解决此问题。

4

2 回答 2

0

你的类型不匹配,试试

公共无效 VideoPreviewFrameAvailable(对象发送者,EventArgs e)

在您的原始处理程序中,您有一个 RoutedEventArgs ,但该处理程序需要 EventArgs。

通常,创建处理程序方法的最佳方法是在键入“+=”并在智能感知中选择以“new”开头的条目,然后按 Tab 或输入 2 次。(如果您使用的是 Sharp Develop 或 Visual Studio)

于 2013-07-09T05:43:38.670 回答
0

我弄清楚了真正的原因。

这是因为 PreviewFrameAvailable 期望不同的争论类型<ICameraCaptureDevice, object>

captureDevice.PreviewFrameAvailable += new Windows.Foundation.TypedEventHandler<ICameraCaptureDevice, object>(VideoPreviewFrameAvailable);

public void VideoPreviewFrameAvailable(ICameraCaptureDevice a, object b)
{
    nFrameCount++;
}

以上行得通。

于 2013-07-09T06:01:29.480 回答