【问题标题】:What can cause a NotSupportedException when creating an EventWaitHandle?创建 EventWaitHandle 时,什么会导致 NotSupportedException?
【发布时间】:2015-11-19 13:21:03
【问题描述】:

上下文

我有一个使用Xamarin 的大型跨平台项目。因为我几乎独自在这个项目上工作,而且我们最近更需要 WPF 和 Windows 10 客户端,所以我完全专注于这些,而忽略了 Android 客户端。 (是的,不要告诉我这很糟糕,我知道...... :-))

异常

但是,现在我正在再次处理它,试图让它启动并运行,但我不断在可移植类库的代码中获得 System.NotSupportedException,其中正在创建一个新的 EventWaitHandle

// The next line throws the System.NotSupportedException: Operation is not supported.
new EventWaitHandle(false, EventResetMode.ManualReset, module.Identifier.ToString()); // module.Identifier is a GUID (it's valid)

这段代码已有几个月的历史,在 WPF 和 Windows 10 客户端中运行良好,所以我认为 Xamarin Android 可能不支持 EventWaitHandles,但我找不到任何证据。相反的情况似乎是:它是well documented

如果它有帮助(它对我没有多大帮助......)这里是异常的完整堆栈跟踪:

11-19 19:18:27.290 I/MonoDroid(26568): UNHANDLED EXCEPTION:
11-19 19:18:27.290 I/MonoDroid(26568): System.NotSupportedException: Operation is not supported.
11-19 19:18:27.290 I/MonoDroid(26568): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <IL 0x00011, 0x00078>
11-19 19:18:27.290 I/MonoDroid(26568): at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>m__0 (object) <IL 0x00006, 0x0006b>
11-19 19:18:27.290 I/MonoDroid(26568): at Android.App.SyncContext/<Post>c__AnonStorey0.<>m__0 () [0x00000] in /Users/builder/data/lanes/2185/53fce373/source/monodroid/src/Mono.Android/src/Android.App/SyncContext.cs:18
11-19 19:18:27.290 I/MonoDroid(26568): at Java.Lang.Thread/RunnableImplementor.Run () [0x0000b] in /Users/builder/data/lanes/2185/53fce373/source/monodroid/src/Mono.Android/src/Java.Lang/Thread.cs:36
11-19 19:18:27.290 I/MonoDroid(26568): at Java.Lang.IRunnableInvoker.n_Run (intptr,intptr) [0x00009] in /Users/builder/data/lanes/2185/53fce373/source/monodroid/src/Mono.Android/platforms/android-19/src/generated/Java.Lang.IRunnable.cs:71
11-19 19:18:27.290 I/MonoDroid(26568): at (wrapper dynamic-method) object.c26750eb-eb85-45fe-a488-c6d12c1aaf0e (intptr,intptr) <IL 0x00011, 0x0003b>
11-19 19:18:27.315 W/art     (26568): JNI RegisterNativeMethods: attempt to register 0 native methods for md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable
11-19 19:18:27.320 D/AndroidRuntime(26568): Shutting down VM
An unhandled exception occured.

11-19 19:18:28.190 E/AndroidRuntime(26568): FATAL EXCEPTION: main
11-19 19:18:28.190 E/AndroidRuntime(26568): Process: de.msm.IDS, PID: 26568
11-19 19:18:28.190 E/AndroidRuntime(26568): java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
11-19 19:18:28.190 E/AndroidRuntime(26568):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
11-19 19:18:28.190 E/AndroidRuntime(26568): Caused by: java.lang.reflect.InvocationTargetException
11-19 19:18:28.190 E/AndroidRuntime(26568):     at java.lang.reflect.Method.invoke(Native Method)
11-19 19:18:28.190 E/AndroidRuntime(26568):     at java.lang.reflect.Method.invoke(Method.java:372)
11-19 19:18:28.190 E/AndroidRuntime(26568):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
11-19 19:18:28.190 E/AndroidRuntime(26568):     ... 1 more
11-19 19:18:28.190 E/AndroidRuntime(26568): Caused by: md52ce486a14f4bcd95899665e9d932190b.JavaProxyThrowable: System.NotSupportedException: Operation is not supported.
11-19 19:18:28.190 E/AndroidRuntime(26568): at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () <IL 0x00011, 0x00078>
11-19 19:18:28.190 E/AndroidRuntime(26568): at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>m__0 (object) <IL 0x00006, 0x0006b>
11-19 19:18:28.190 E/AndroidRuntime(26568): at Android.App.SyncContext/<Post>c__AnonStorey0.<>m__0 () [0x00000] in /Users/builder/data/lanes/2185/53fce373/source/monodroid/src/Mono.Android/src/Android.App/SyncContext.cs:18
11-19 19:18:28.190 E/AndroidRuntime(26568): at Java.Lang.Thread/RunnableImplementor.Run () [0x0000b] in /Users/builder/data/lanes/2185/53fce373/source/monodroid/src/Mono.Android/src/Java.Lang/Thread.cs:36
11-19 19:18:28.190 E/AndroidRuntime(26568): at Java.Lang.IRunnableInvoker.n_Run (intptr,intptr) [0x00009] in /Users/builder/data/lanes/2185/53fce373/source/monodroid/src/Mono.Android/platforms/android-19/src/generated/Java.Lang.IRunnable.cs:71
11-19 19:18:28.190 E/AndroidRuntime(26568): at (wrapper dynamic-method) object.c26750eb-eb85-45fe-a488-c6d12c1aaf0e (intptr,intptr) <IL 0x00011, 0x0003b>
11-19 19:18:28.190 E/AndroidRuntime(26568): 
11-19 19:18:28.190 E/AndroidRuntime(26568):     at mono.java.lang.RunnableImplementor.n_run(Native Method)
11-19 19:18:28.190 E/AndroidRuntime(26568):     at mono.java.lang.RunnableImplementor.run(RunnableImplementor.java:29)
11-19 19:18:28.190 E/AndroidRuntime(26568):     at android.os.Handler.handleCallback(Handler.java:739)
11-19 19:18:28.190 E/AndroidRuntime(26568):     at android.os.Handler.dispatchMessage(Handler.java:95)
11-19 19:18:28.190 E/AndroidRuntime(26568):     at android.os.Looper.loop(Looper.java:145)
11-19 19:18:28.190 E/AndroidRuntime(26568):     at android.app.ActivityThread.main(ActivityThread.java:6126)
11-19 19:18:28.190 E/AndroidRuntime(26568):     ... 4 more    

项目详情

Android 项目设置为使用 API 级别 19:

PCL 目标当然包括 .NET Framework 4.5 和 Xamarin.Android:

我主要用于调试的目标硬件设备是Samsung SM-P900Android 5.0.2

在 Android 中(但在 Windows 中没有)可能导致此异常的原因是什么?

【问题讨论】:

  • 异常的完整堆栈是什么?

标签: c# android xamarin mono xamarin.android


【解决方案1】:

查看单声道 (Xamarin) .NET 实现: https://github.com/mono/mono/blob/master/mcs/class/corlib/System.Threading/EventWaitHandle.cs

单声道不支持 EventWaitHandle。

public EventWaitHandle (bool initialState, EventResetMode mode, string name)
    {
        throw new NotSupportedException ();
    }

【讨论】:

猜你喜欢
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多