call_in_appdomain 関数call_in_appdomain Function

指定されたアプリケーションドメインで関数を実行します。Executes a function in a specified application domain.

構文Syntax

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 ]
);

パラメーターParameters

appdomainIdappdomainId
関数を呼び出す appdomain。The appdomain in which to call the function.

voidFuncvoidFunc
N 個のパラメーターを受け取る void 関数へのポインター (0 < = N < = 15)。Pointer to a void function that takes N parameters (0 <= N <= 15).

非 VoidfuncnonvoidFunc
N 個のパラメーターを受け取る非void 関数へのポインター (0 < = N < = 15)。Pointer to a non-void function that takes N parameters (0 <= N <= 15).

arg1...argNarg1...argN
0 ~ 15 個のパラメーターを voidFunc に渡すか、他の appdomain で nonvoidFunc します。Zero to 15 parameters to be passed to voidFunc or nonvoidFunc in the other appdomain.

戻り値Return Value

指定されたアプリケーションドメインで voidFunc または nonvoidFunc を実行した結果。The result of executing voidFunc or nonvoidFunc in the specified application domain.

コメントRemarks

call_in_appdomain に渡される関数の引数を CLR 型にすることはできません。The arguments of the function passed to call_in_appdomain must not be CLR types.

Example

// 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 );
}

出力Output

default appdomain: msl_call_in_appdomain.exe
in appDomain1: First Domain
default appdomain id = 1
appDomain1 id = 2

要件Requirements

ヘッダーファイル<msclr\appdomain.h >Header file <msclr\appdomain.h>

名前空間msclrNamespace msclr