- 전체
- Native Apps
- WinJS App
- C# Apps
- XAML
- VB.net
- VisualC.net
- C++
- MFC
- visual studio mobile app dev
- Azure ms cloud service
- Asp.net
- 인공지능 (AI)
- wpf
- UWP
- MAUI
- asp.net
Executing Code in Another Application Domain (C# Programming Guide)
Visual Studio 2005
Once an assembly has been loaded into an application domain, the code it contains can be executed. The simplest way to do this is to use AssemblyLoad which will load the assembly into the current application domain, and begin running the code at the assembly's default entry point.
If you want to load the assembly into another application domain, use ExecuteAssembly or ExecuteAssemblyByName, or one of the other overloaded versions of these methods.
If you want to execute the other assembly starting other than at the default entry point, define a new type in the remote assembly, deriving from MarshalByRefObject. Then use CreateInstance to create an instance of that type in your application.
Consider the following file, which creates an assembly consisting of a single namespace and two classes. Assume this assembly has been built, and is stored on drive C with the name HelloWorldRemote.exe.
// This namespace contains code to be called.
namespace HelloWorldRemote
{
public class RemoteObject : System.MarshalByRefObject
{
public RemoteObject()
{
System.Console.WriteLine("Hello, World! (RemoteObject Constructor)");
}
}
class Program
{
static void Main()
{
System.Console.WriteLine("Hello, World! (Main method)");
}
}
}
To access the code from another application, you can either load the assembly into the current application domain or create a new application domain and load the assembly into it. If you load the assembly into the current application domain with Assembly.LoadFrom, you can use Assembly.CreateInstance to instantiate an instance of the RemoteObject class, which causes the object constructor to be executed.
static void Main()
{
// Load the assembly into the current appdomain:
System.Reflection.Assembly newAssembly = System.Reflection.Assembly.LoadFrom(@"c:\HelloWorldRemote.exe");
// Instantiate RemoteObject:
newAssembly.CreateInstance("HelloWorldRemote.RemoteObject");
}
When loading the assembly into a separate application domain, use AppDomain.ExecuteAssembly to access the default entry point or AppDomain.CreateInstance to create an instance of the RemoteObject class. Creating the instance causes the constructor to be executed.
static void Main()
{
System.AppDomain NewAppDomain = System.AppDomain.CreateDomain("NewApplicationDomain");
// Load the assembly and call the default entry point:
NewAppDomain.ExecuteAssembly(@"c:\HelloWorldRemote.exe");
// Create an instance of RemoteObject:
NewAppDomain.CreateInstanceFrom(@"c:\HelloWorldRemote.exe", "HelloWorldRemote.RemoteObject");
}
If you do not want to load the assembly programmatically, use Add Reference from the Solution Explorer to specify the assembly HelloWorldRemote.exe. Then, add a using HelloWorldRemote; directive to the using block of your application, and use the RemoteObject type in your program to declare an instance of the RemoteObject object, like this:
static void Main()
{
// This code creates an instance of RemoteObject, assuming HelloWorldRemote has been added as a reference:
HelloWorldRemote.RemoteObject o = new HelloWorldRemote.RemoteObject();
}
[출처] https://msdn.microsoft.com/en-us/library/ms173139(v=vs.80).aspx
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| 15 | C# getMethod : Call Method by Name | 졸리운_곰 | 2017.07.01 | 258 |
| 14 | Reflection for C++ | 졸리운_곰 | 2017.07.01 | 343 |
| 13 |
Load an EXE File and Run It from Memory
| 졸리운_곰 | 2017.07.01 | 333 |
| 12 |
.Net code injection 닷넷 코드 인젝션
| 졸리운_곰 | 2017.07.01 | 298 |
| 11 |
Three Ways to Inject Your Code into Another Process
| 졸리운_곰 | 2017.07.01 | 547 |
| 10 |
Visual C++를 사용하여 플랫폼 간 앱 제작
| 졸리운_곰 | 2015.08.16 | 645 |
| 9 |
webdav c++ lib 라이브러러
| 졸리운_곰 | 2015.05.11 | 395 |
| 8 | Use Visual Studio C++ 6.0 on Windows 8.1 64bit : 윈도우 8.1에서 비주얼 스투디오 6.0 사용하기 | 졸리운_곰 | 2015.05.09 | 632 |
| 7 |
Visual Studio 2013을 사용하여 앱 개발
| 졸리운_곰 | 2014.05.30 | 842 |
| 6 |
C++로 작성한 Windows 스토어 앱용 로드맵
| 졸리운_곰 | 2014.05.30 | 570 |
| 5 |
블로그 뷰어 앱 만들기(C++)
| 졸리운_곰 | 2014.05.30 | 3956 |
| 4 |
C++ Windows 스토어 앱에서 파일 선택기 사용(자습서 4/4)
| 졸리운_곰 | 2014.05.30 | 762 |
| 3 |
C++ Windows 스토어 앱에서 탐색 및 보기 추가(자습서 3/4)
| 졸리운_곰 | 2014.05.30 | 594 |
| 2 |
C++ Windows 스토어 앱의 수명 주기 및 상태 관리(자습서 2/4)
| 졸리운_곰 | 2014.05.30 | 496 |
| 1 |
기본 C++ Windows 스토어 앱 만들기(자습서 1/4)
| 졸리운_곰 | 2014.05.30 | 857 |

