Aracılığıyla paylaş


call_in_appdomain işlevi

İşlev, belirtilen uygulama etki alanında yürütür.

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
    Appdomain içinde işlevini çağırmak.

  • voidFunc
    İşaretçi bir void n parametre işlevi (0 < = n < = 15).

  • nonvoidFunc
    İşaretçi bir olmayan-void n parametre işlevi (0 < = n < = 15).

  • arg1...argN
    Sıfır için iletilmek üzere 15 parametre olarak voidFunc veya nonvoidFunc diğer appdomain içinde.

Dönüş Değeri

Yürütme sonucunu voidFunc veya nonvoidFunc belirtilen uygulama etki alanında.

Notlar

İşlev bağımsız değişkenleri geçirilen call_in_appdomain clr türü olmaması gerekir.

Ö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

Üstbilgi dosyası <msclr\appdomain.h>

Ad msclr