本文整理汇总了C#中IProcess.Stop方法的典型用法代码示例。如果您正苦于以下问题:C# IProcess.Stop方法的具体用法?C# IProcess.Stop怎么用?C# IProcess.Stop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IProcess
的用法示例。
在下文中一共展示了IProcess.Stop方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Stop
/// <summary>
/// Also to be thought about BeginStop, but not sure about BeginStart (SD)
/// </summary>
public override void Stop()
{
Log.TraceData(Log.Source,TraceEventType.Stop,
ProducerManagerMessage.StoppingProducing,
new ContextualLogEntry
{
Message =
string.Format
(
"{0}: Thread Id = {1}': Stopping Producing.",
Name,
Thread.CurrentThread.ManagedThreadId
),
ContextIdentifier = contextIdentifier
});
if (
ErrorTrap.AddAssertion
(
producers != null,
ProducerManagerMessage.ProducersNotInstantiated,
string.Format
(
"{0}: Thread Id = {1}': Producers Not Instantiated",
Name,
Thread.CurrentThread.ManagedThreadId
),
contextIdentifier
)
)
{
var whs = new WaitHandle[producers.Count];
for (int i = 0; i < producers.Count; i++)
{
IAsyncResult ar =
producers[i].BeginStop
(
null,
producerStoppedCallback);
whs[i] = ar.AsyncWaitHandle;
}
// Starting the process that will move messages from the retrievedItems internal collection
// to the retrieval queue
retrievedItemsCleaner = new RetrievedItemsCleanerManager
(
RetrievedItems,
RetrievalStorageIsRecoverable,
contextIdentifier,
RetrievedItemsCleanerInterval,
"RetrievedItems Cleaner",
"Stores retrieved items back to the Retrieval queue.",
RetrievalCleanersCount,
CleanerRegularStopTimeout
);
retrievedItemsCleaner.Stopped += RetrievedItemsCleaner_Stopped;
retrievedItemsCleaner.Start();
bool processesStoppedWithinTimeout = WaitHandle.WaitAll
(
whs,
ProducingStopTimeout,
false
);
if (!processesStoppedWithinTimeout)
{
Log.TraceData(Log.Source,TraceEventType.Error,
ProducerManagerMessage.ProducersStoppingTimeoutError,
new ContextualLogEntry
{
Message =
string.Format
(
"{0}: Some of the producers were not able to StopInternal within timeout of {1} ms." +
" Process will continue its regular shutdown by calling RetrievedItemsCleaner StopInternal.",
Name,
ProducingStopTimeout
),
ContextIdentifier = contextIdentifier
});
}
retrievedItemsCleaner.Stop();
if (!cleanerStopEvent.WaitOne
(
TotalCleanerRegularStopTimeout,
false
))
{
Log.TraceData(Log.Source,TraceEventType.Error,
//.........这里部分代码省略.........
示例2: StopProcess
private void StopProcess(IProcess process)
{
if (process != null)
{
process.Stop();
}
}