call_in_appdomain İşlevi
Belirtilen uygulama etki alanında bir işlev yürütür.
Sözdizimi
template <typename ArgType1, ...typename ArgTypeN>
void call_in_appdomain(
DWORD appdomainId,
void (*voidFunc)(ArgType1, ...ArgTypeN) [ ,
ArgType1 arg1,
...
ArgTypeN argN ]
);
template <typename RetType, typename ArgType1, ...typename ArgTypeN>
RetType call_in_appdomain(
DWORD appdomainId,
RetType (*nonvoidFunc)(ArgType1, ...ArgTypeN) [ ,
ArgType1 arg1,
...
ArgTypeN argN ]
);
Parametreler
appdomainId
İşlevin çağrıldığı uygulama etki alanı.
voidFunc
N parametrelerini alan bir void
işlev işaretçisi (0 <= N <= 15).
nonvoidFunc
N parametrelerini alan işlev olmayanvoid
bir işaretçi (0 <= N <= 15).
arg1... argN
Diğer uygulama etki alanına veya nonvoidFunc
diğer uygulama etki alanına geçirilecek voidFunc
sıfırdan 15 parametreye kadar.
Dönüş Değeri
Veya nonvoidFunc
belirtilen uygulama etki alanında yürütmenin voidFunc
sonucu.
Açıklamalar
geçirilen call_in_appdomain
işlevin bağımsız değişkenleri CLR türleri olmamalıdır.
Örnek
// msl_call_in_appdomain.cpp
// compile with: /clr
// Defines two functions: one takes a parameter and returns nothing,
// the other takes no parameters and returns an int. Calls both
// functions in the default appdomain and in a newly-created
// application domain using call_in_appdomain.
#include <msclr\appdomain.h>
using namespace System;
using namespace msclr;
void PrintCurrentDomainName( char* format )
{
String^ s = gcnew String(format);
Console::WriteLine( s, AppDomain::CurrentDomain->FriendlyName );
}
int GetDomainId()
{
return AppDomain::CurrentDomain->Id;
}
int main()
{
AppDomain^ appDomain1 = AppDomain::CreateDomain( "First Domain" );
call_in_appdomain( AppDomain::CurrentDomain->Id,
&PrintCurrentDomainName,
(char*)"default appdomain: {0}" );
call_in_appdomain( appDomain1->Id,
&PrintCurrentDomainName,
(char*)"in appDomain1: {0}" );
int id;
id = call_in_appdomain( AppDomain::CurrentDomain->Id, &GetDomainId );
Console::WriteLine( "default appdomain id = {0}", id );
id = call_in_appdomain( appDomain1->Id, &GetDomainId );
Console::WriteLine( "appDomain1 id = {0}", id );
}
Çıktı
default appdomain: msl_call_in_appdomain.exe
in appDomain1: First Domain
default appdomain id = 1
appDomain1 id = 2
Gereksinimler
Üst bilgi dosyası<msclr\appdomain.h>
Ad alanı msclr