本文整理汇总了C#中IPresenter.CanShutdown方法的典型用法代码示例。如果您正苦于以下问题:C# IPresenter.CanShutdown方法的具体用法?C# IPresenter.CanShutdown怎么用?C# IPresenter.CanShutdown使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IPresenter
的用法示例。
在下文中一共展示了IPresenter.CanShutdown方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CanShutdownPresenter
/// <summary>
/// Determines if the specified presenter can be shut down.
/// </summary>
/// <param name="presenter">The presenter.</param>
/// <param name="completed">Called when the shutdown action is finished.</param>
protected virtual void CanShutdownPresenter(IPresenter presenter, Action<bool> completed)
{
var canShutdownPresenter = presenter.CanShutdown();
if (!canShutdownPresenter)
{
var custom = presenter as ISupportCustomShutdown;
if (custom != null)
{
var model = custom.CreateShutdownModel();
if (model != null)
{
ExecuteShutdownModel(
model,
() => completed(custom.CanShutdown(model))
);
return;
}
}
}
completed(canShutdownPresenter);
}
示例2: OnShutdownAttempted
/// <summary>
/// Called when shutdown attempted.
/// </summary>
/// <param name="rootModel">The root model.</param>
/// <param name="view">The view.</param>
/// <param name="handleShutdownModel">The handler for the shutdown model.</param>
/// <param name="e">The <see cref="System.ComponentModel.CancelEventArgs"/> instance containing the event data.</param>
protected virtual void OnShutdownAttempted(IPresenter rootModel, Window view, Action<ISubordinate, Action> handleShutdownModel, CancelEventArgs e)
{
if (_actuallyClosing || rootModel.CanShutdown())
{
_actuallyClosing = false;
return;
}
bool runningAsync = false;
var custom = rootModel as ISupportCustomShutdown;
if (custom != null && handleShutdownModel != null)
{
var shutdownModel = custom.CreateShutdownModel();
var shouldEnd = false;
handleShutdownModel(
shutdownModel,
() =>
{
var canShutdown = custom.CanShutdown(shutdownModel);
if (runningAsync && canShutdown)
{
_actuallyClosing = true;
view.Close();
}
else e.Cancel = !canShutdown;
shouldEnd = true;
});
if (shouldEnd)
return;
}
runningAsync = e.Cancel = true;
}