本文整理汇总了C#中IBuildContext.ClearBuildMessage方法的典型用法代码示例。如果您正苦于以下问题:C# IBuildContext.ClearBuildMessage方法的具体用法?C# IBuildContext.ClearBuildMessage怎么用?C# IBuildContext.ClearBuildMessage使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IBuildContext
的用法示例。
在下文中一共展示了IBuildContext.ClearBuildMessage方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Build
public void Build(IBuildContext context)
{
string prefix = context.OnlyCheck ? "Проверка" : "Сборка";
context.ClearBuildMessage();
context.BuildMessageWriteLine(prefix + " начата.", BuildMessageTypes.Notification);
// Общее действие для вызова методов с отменой выполнения задач.
// Параметры:
// a - метод для вызова;
// c - токен для отмены и других операций;
// m - сообщение о начале действия.
Action<Action<IBuildContext, CancellationTokenSource>, IBuildContext, CancellationTokenSource, string> actionWithErrorHandling =
(Action<IBuildContext, CancellationTokenSource> a, IBuildContext ctx, CancellationTokenSource c, string m) =>
{
// Не будем выводить названия действия при проверке, так как некоторые могут не выполнятся.
if (!context.OnlyCheck)
context.BuildMessageWriteLine(m, BuildMessageTypes.Notification);
try
{
a(ctx, c);
}
catch (Exception e)
{
context.BuildMessageWriteLine(e.Message, BuildMessageTypes.Error);
c.Cancel();
c.Token.ThrowIfCancellationRequested();
}
};
Stopwatch stopwatch = Stopwatch.StartNew();
CancellationTokenSource cts = new CancellationTokenSource();
Task.Factory.
StartNew(delegate
{
actionWithErrorHandling(CheckProduct, context, cts, "");
}, cts.Token).
ContinueWith(delegate
{
// Загружаем шаблоны во временную папку.
actionWithErrorHandling(LoadingTemplates, context, cts, "Загрузка шаблонов.");
}, cts.Token).
ContinueWith(delegate
{
actionWithErrorHandling(ProcessingTemplates, context, cts, "Обработка шаблонов.");
}, cts.Token).
ContinueWith(delegate
{
actionWithErrorHandling(CompilationAndBuild, context, cts, "Компиляция и сборка.");
}, cts.Token).
ContinueWith(delegate
{
stopwatch.Stop();
// Сюда токен не передаем.
// Здесь должен быть код, выполняющийся в любом случае, завершились задачи или нет.
context.BuildMessageWriteLine(
string.Format(prefix + " завершена {0} за {1}.", cts.IsCancellationRequested ? "с ошибками" : "успешно",
stopwatch.Elapsed.ToString("mm\\:ss")),
cts.IsCancellationRequested ? BuildMessageTypes.Error : BuildMessageTypes.Information);
if (context.BuildIsFinished != null)
context.BuildIsFinished();
});
}