我是.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>'
请指导我如何解决此问题。
答案 0 :(得分:0)
您的类型不匹配,请尝试
public void VideoPreviewFrameAvailable(object sender,EventArgs e)
在原始处理程序中,您有一个RoutedEventArgs,但处理程序需要EventArgs。
通常,创建处理程序方法的最佳方法是在键入“+ =”并选择intellisense中以“new”开头的条目,然后按Tab键或输入2次。 (如果您使用的是Sharp Develop或Visual Studio)
答案 1 :(得分:0)
我想出了实际的原因。
这是因为PreviewFrameAvailable期望一种不同的争论类型<ICameraCaptureDevice, object>
captureDevice.PreviewFrameAvailable += new Windows.Foundation.TypedEventHandler<ICameraCaptureDevice, object>(VideoPreviewFrameAvailable);
public void VideoPreviewFrameAvailable(ICameraCaptureDevice a, object b)
{
nFrameCount++;
}
以上解决了问题。