我有一个来自Codeplex的WPF网络摄像头组件的源代码,我正试图从.NET 3.5移植到.NET 4.0。
在两个目标下编译都很好,但在.NET 4.0版本中,当在此方法中System.Runtime.InteropServices.SEHException (0x80004005): External component has thrown an exception
行使用moniker.BindToObject(bindCtx, null, ref filterId, out filterObject);
运行应用时,它会崩溃:
internal static IBaseFilter CreateFilter(string filterMoniker)
{
object filterObject = null;
IBindCtx bindCtx = null;
IMoniker moniker = null;
int n = 0;
if (CreateBindCtx(0, out bindCtx) == 0)
{
if (MkParseDisplayName(bindCtx, filterMoniker, ref n, out moniker) == 0)
{
Guid filterId = typeof(IBaseFilter).GUID;
try
{
moniker.BindToObject(bindCtx, null, ref filterId, out filterObject);
}
catch (Exception ex)
{
MessageBox.Show(ex+"");
}
Marshal.ReleaseComObject(moniker);
}
Marshal.ReleaseComObject(bindCtx);
}
return filterObject as IBaseFilter;
}
知道为什么以及如何解决它?
相机是Genius Eye 110,我在Windows XP SP2下工作。
答案 0 :(得分:0)
我下载了代码,用4.0编译它,它对我有用。你确定你有一个系统知道的网络摄像头吗?也许您可以检查设备管理器进行验证。
如果我的相机没有插上,程序会抛出与你类似的异常。
-Matt