protected override async void Execute(Csla.Rules.IRuleContext context) { MyExpensiveCommand result = null; if (IsAsync) { result = await MyExpensiveCommand.DoCommandAsync(); } else { result = MyExpensiveCommand.DoCommandAsync().Result; } if (result == null) { context.AddErrorResult("Command failed to run"); } else if (result.Result) { context.AddInformationResult(result.ResultText); } else { context.AddErrorResult(result.ResultText); } context.Complete(); }
protected override void Execute(Csla.Rules.IRuleContext context) { var bw = new System.ComponentModel.BackgroundWorker(); bw.DoWork += (o, e) => { var name = (string)context.InputPropertyValues[PrimaryProperty]; bool result = string.IsNullOrEmpty(name) || !(from c in name.ToCharArray() where char.IsDigit(c) select c) .Any(); if (!result) { context.AddErrorResult("Name must consist of only letters."); } }; bw.RunWorkerCompleted += (o, e) => { if (e.Error != null) { context.AddErrorResult(e.Error.Message); } context.Complete(); }; bw.RunWorkerAsync(); }
protected async override void Execute(Csla.Rules.IRuleContext context) { var tcs = new TaskCompletionSource <bool>(); new Task(() => { var name = (string)context.InputPropertyValues[PrimaryProperty]; tcs.SetResult(string.IsNullOrEmpty(name) || !(from c in name.ToCharArray() where char.IsDigit(c) select c) .Any()); }).Start(); var result = await tcs.Task; if (!result) { context.AddErrorResult("Name must consist of only letters."); } context.Complete(); }
protected override void Execute(Csla.Rules.IRuleContext context) { BackgroundWorker worker = new BackgroundWorker(); worker.DoWork += (o, e) => Thread.Sleep(3000); worker.RunWorkerCompleted += (o, e) => { string val = (string)context.InputPropertyValues[PrimaryProperty]; if (val == "Error") { context.AddErrorResult("Invalid data!"); } else if (val == "Warning") { context.AddWarningResult("This might not be a great idea!"); } else if (val == "Information") { context.AddInformationResult("Just an FYI!"); } context.Complete(); }; worker.RunWorkerAsync(); }