本文整理汇总了C#中ICommand.RequiresParentTerminal方法的典型用法代码示例。如果您正苦于以下问题:C# ICommand.RequiresParentTerminal方法的具体用法?C# ICommand.RequiresParentTerminal怎么用?C# ICommand.RequiresParentTerminal使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ICommand
的用法示例。
在下文中一共展示了ICommand.RequiresParentTerminal方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ExecuteCommand
private int ExecuteCommand(
ICommand TargetCommand,
string[] Arguments,
bool bWaitIfNeeded)
{
if ( TargetCommand is ISingleInstanceCommand )
{
bool bAllowExecute = Monitor.TryEnter( TargetCommand.GetType(), bWaitIfNeeded ? Timeout.Infinite : 0 );
if ( ! bAllowExecute )
{
CommandException ExecutionError = new CommandException();
throw ExecutionError;
}
}
int CommandStatus;
System.Exception ProcessError = null;
SetInputMode( InputMode.Redirected );
_CommandList.Add( TargetCommand );
CommandArgument[] commandArguments = GenerateArguments( Arguments );
try
{
ICommandResult commandResult;
CommandStatus = TargetCommand.PerformCommand( commandArguments, out commandResult );
}
catch ( System.Exception ProcessException)
{
CommandStatus = 0;
ProcessError = ProcessException;
}
bool bRequiresParent = false;
bool bExternal = false;
try
{
bRequiresParent = TargetCommand.RequiresParentTerminal();
}
catch
{
}
if ( TargetCommand is ExternalCommand )
{
bExternal = true;
if ( ! bRequiresParent )
{
( (ExternalCommand) TargetCommand ).Disconnect();
}
}
if ( ! bExternal ||
! bRequiresParent )
{
_CommandList.Remove( TargetCommand );
}
if ( ! bRequiresParent )
{
SetInputMode( InputMode.Native );
}
if ( TargetCommand is ISingleInstanceCommand )
{
Monitor.Exit( TargetCommand.GetType() );
}
if ( null != ProcessError )
{
throw ProcessError;
}
return CommandStatus;
}