本文整理汇总了C#中VirtualMachine.GetNextEventSet方法的典型用法代码示例。如果您正苦于以下问题:C# VirtualMachine.GetNextEventSet方法的具体用法?C# VirtualMachine.GetNextEventSet怎么用?C# VirtualMachine.GetNextEventSet使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VirtualMachine
的用法示例。
在下文中一共展示了VirtualMachine.GetNextEventSet方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: StartDebugging
internal void StartDebugging()
{
if (_vm != null)
return;
_vm = VirtualMachineManager.Connect(new IPEndPoint(_ipAddress, 11000));
_vm.EnableEvents(EventType.AssemblyLoad,
EventType.ThreadStart,
EventType.ThreadDeath,
EventType.AssemblyUnload,
EventType.UserBreak,
EventType.Exception,
EventType.UserLog,
EventType.KeepAlive,
EventType.TypeLoad);
EventSet set = _vm.GetNextEventSet();
if (set.Events.OfType<VMStartEvent>().Any())
{
//TODO: review by techcap
_mainThread = new AD7Thread(_engine, new DebuggedThread(set.Events[0].Thread, _engine));
_engine.Callback.ThreadStarted(_mainThread);
Task.Factory.StartNew(ReceiveThread, TaskCreationOptions.LongRunning);
}
else
throw new Exception("Didnt get VMStart-Event!");
}
示例2: ConnectionStarted
/// <summary>
/// If subclasses do an async connect in OnRun, they should pass the resulting VM to this method.
/// If the vm is null, the session will be closed.
/// </summary>
void ConnectionStarted (VirtualMachine vm)
{
if (this.vm != null)
throw new InvalidOperationException ("The VM has already connected");
if (vm == null) {
EndSession ();
return;
}
connectionHandle = null;
this.vm = vm;
//full paths, from GetSourceFiles (true), are only supported by sdb protocol 2.2 and later
var version = vm.Version;
if (version.MajorVersion <= 2 && version.MinorVersion < 2)
useFullPaths = false;
ConnectOutput (vm.StandardOutput, false);
ConnectOutput (vm.StandardError, true);
OnConnectionStarted ();
vm.EnableEvents (EventType.AssemblyLoad, EventType.TypeLoad, EventType.ThreadStart, EventType.ThreadDeath, EventType.AssemblyUnload);
try {
unhandledExceptionRequest = vm.CreateExceptionRequest (null, false, true);
unhandledExceptionRequest.Enable ();
} catch (NotSupportedException) {
//Mono < 2.6.3 doesn't support catching unhandled exceptions
}
OnStarted ();
started = true;
/* Wait for the VMStart event */
HandleEventSet (vm.GetNextEventSet ());
eventHandler = new Thread (EventHandler);
eventHandler.Name = "SDB event handler";
eventHandler.Start ();
}
示例3: ConnectionStarted
/// <summary>
/// If subclasses do an async connect in OnRun, they should pass the resulting VM to this method.
/// If the vm is null, the session will be closed.
/// </summary>
void ConnectionStarted (VirtualMachine vm)
{
if (this.vm != null)
throw new InvalidOperationException ("The VM has already connected");
if (vm == null) {
EndSession ();
return;
}
connectionHandle = null;
this.vm = vm;
//full paths, from GetSourceFiles (true), are only supported by sdb protocol 2.2 and later
useFullPaths = vm.Version.AtLeast (2, 2);
ConnectOutput (vm.StandardOutput, false);
ConnectOutput (vm.StandardError, true);
HideConnectionDialog ();
vm.EnableEvents (EventType.AssemblyLoad, EventType.ThreadStart, EventType.ThreadDeath,
EventType.AssemblyUnload, EventType.UserBreak, EventType.UserLog);
try {
unhandledExceptionRequest = vm.CreateExceptionRequest (null, false, true);
if (assemblyFilters != null && assemblyFilters.Count > 0)
unhandledExceptionRequest.AssemblyFilter = assemblyFilters;
unhandledExceptionRequest.Enable ();
} catch (NotSupportedException) {
//Mono < 2.6.3 doesn't support catching unhandled exceptions
}
if (vm.Version.AtLeast (2, 9)) {
/* Created later */
} else {
vm.EnableEvents (EventType.TypeLoad);
}
started = true;
/* Wait for the VMStart event */
HandleEventSet (vm.GetNextEventSet ());
eventHandler = new Thread (EventHandler);
eventHandler.Name = "SDB event handler";
eventHandler.Start ();
}