本文整理汇总了C#中TimeEntryModel.StoreAsync方法的典型用法代码示例。如果您正苦于以下问题:C# TimeEntryModel.StoreAsync方法的具体用法?C# TimeEntryModel.StoreAsync怎么用?C# TimeEntryModel.StoreAsync使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TimeEntryModel
的用法示例。
在下文中一共展示了TimeEntryModel.StoreAsync方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: OnActionButtonClicked
private async void OnActionButtonClicked (object sender, EventArgs e)
{
// Protect from double clicks
if (isProcessingAction)
return;
isProcessingAction = true;
try {
var entry = ActiveTimeEntry;
if (entry == null)
return;
// Make sure that we work on the copy of the entry to not affect the rest of the logic.
entry = new TimeEntryModel (new TimeEntryData (entry.Data));
var showProjectSelection = false;
try {
if (entry.State == TimeEntryState.New && entry.StopTime.HasValue) {
await entry.StoreAsync ();
} else if (entry.State == TimeEntryState.Running) {
await entry.StopAsync ();
} else {
var startTask = entry.StartAsync ();
var userId = ServiceContainer.Resolve<AuthManager> ().GetUserId ();
if (userId.HasValue && ChooseProjectForNew && entry.Project == null) {
var store = ServiceContainer.Resolve<IDataStore> ();
var countTask = store.CountUserAccessibleProjects (userId.Value);
// Wait for the start and count to finish
await Task.WhenAll (startTask, countTask);
if (countTask.Result > 0)
showProjectSelection = true;
} else {
await startTask;
}
}
} catch (Exception ex) {
var log = ServiceContainer.Resolve<Logger> ();
log.Warning (LogTag, ex, "Failed to change time entry state.");
}
if (showProjectSelection) {
new ChooseTimeEntryProjectDialogFragment (entry).Show (activity.SupportFragmentManager, "projects_dialog");
}
var bus = ServiceContainer.Resolve<MessageBus> ();
bus.Send (new UserTimeEntryStateChangeMessage (this, entry));
} finally {
isProcessingAction = false;
}
}