41 static readonly MUTF8Encoding
MUTF8 = MUTF8Encoding.GetMUTF8(52);
43 internal static JavaVM* pJavaVM;
57 new pf_int(DetachCurrentThread),
64 JNIVM.jvmCreated =
true;
81 internal static jint DestroyJavaVM(
JavaVM* pJVM)
83 if (
JNIVM.jvmDestroyed)
86 JNIVM.jvmDestroyed =
true;
98 internal static jint AttachCurrentThread(
JavaVM* pJVM,
void** penv,
void* args)
113 if (pAttachArgs !=
null)
115 if (!
JNIVM.IsSupportedJNIVersion(pAttachArgs->version) || pAttachArgs->version ==
JNIEnv.JNI_VERSION_1_1)
118 return JNIEnv.JNI_EVERSION;
122 var env = JNIEnvContext.Current;
132 System.Threading.Thread.CurrentThread.IsBackground = asDaemon;
133 if (pAttachArgs !=
null)
135 if (pAttachArgs->name !=
null &&
System.Threading.Thread.CurrentThread.Name ==
null)
143 System.Threading.Thread.CurrentThread.Name =
MUTF8.GetString(pAttachArgs->name, l);
145 catch (InvalidOperationException)
151 if (threadGroup !=
null)
155 *penv =
JNIEnv.CreateJNIEnv(
JVM.Context);
164 internal static jint DetachCurrentThread(
JavaVM* pJVM)
166 if (JNIEnvContext.Current ==
null)
174 java.
lang.Thread.currentThread().die();
178 internal static jint GetEnv(
JavaVM* pJVM,
void** penv,
jint version)
180 if (
JNIVM.IsSupportedJNIVersion(version))
182 var env = JNIEnvContext.Current;
190 return JNIEnv.JNI_EDETACHED;
194 return JNIEnv.JNI_EVERSION;
197 internal static jint AttachCurrentThreadAsDaemon(
JavaVM* pJVM,
void** penv,
void* args)