sync updates
This commit is contained in:
parent
067b18d067
commit
ac68e0ba41
|
@ -4,7 +4,6 @@ using MediaBrowser.Controller.Library;
|
|||
using MediaBrowser.Controller.Net;
|
||||
using MediaBrowser.Controller.Persistence;
|
||||
using MediaBrowser.Model.Dto;
|
||||
using MediaBrowser.Model.Querying;
|
||||
using ServiceStack;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
|
|
@ -335,12 +335,30 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||
trigger.Start(false);
|
||||
}
|
||||
|
||||
private Task _currentTask;
|
||||
|
||||
/// <summary>
|
||||
/// Executes the task
|
||||
/// </summary>
|
||||
/// <returns>Task.</returns>
|
||||
/// <exception cref="System.InvalidOperationException">Cannot execute a Task that is already running</exception>
|
||||
public async Task Execute()
|
||||
{
|
||||
var task = ExecuteInternal();
|
||||
|
||||
_currentTask = task;
|
||||
|
||||
try
|
||||
{
|
||||
await task.ConfigureAwait(false);
|
||||
}
|
||||
finally
|
||||
{
|
||||
_currentTask = null;
|
||||
}
|
||||
}
|
||||
|
||||
private async Task ExecuteInternal()
|
||||
{
|
||||
// Cancel the current execution, if any
|
||||
if (CurrentCancellationTokenSource != null)
|
||||
|
@ -585,14 +603,60 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
|
|||
{
|
||||
DisposeTriggers();
|
||||
|
||||
if (State == TaskState.Running)
|
||||
var wassRunning = State == TaskState.Running;
|
||||
var startTime = CurrentExecutionStartTime;
|
||||
|
||||
var token = CurrentCancellationTokenSource;
|
||||
if (token != null)
|
||||
{
|
||||
OnTaskCompleted(CurrentExecutionStartTime, DateTime.UtcNow, TaskCompletionStatus.Aborted, null);
|
||||
try
|
||||
{
|
||||
Logger.Debug(Name + ": Cancelling");
|
||||
token.Cancel();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.ErrorException("Error calling CancellationToken.Cancel();", ex);
|
||||
}
|
||||
}
|
||||
var task = _currentTask;
|
||||
if (task != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
Logger.Debug(Name + ": Waiting on Task");
|
||||
var exited = Task.WaitAll(new[] { task }, 2000);
|
||||
|
||||
if (exited)
|
||||
{
|
||||
Logger.Debug(Name + ": Task exited");
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.Debug(Name + ": Timed out waiting for task to stop");
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.ErrorException("Error calling Task.WaitAll();", ex);
|
||||
}
|
||||
}
|
||||
|
||||
if (CurrentCancellationTokenSource != null)
|
||||
if (token != null)
|
||||
{
|
||||
CurrentCancellationTokenSource.Dispose();
|
||||
try
|
||||
{
|
||||
Logger.Debug(Name + ": Disposing CancellationToken");
|
||||
token.Dispose();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.ErrorException("Error calling CancellationToken.Dispose();", ex);
|
||||
}
|
||||
}
|
||||
if (wassRunning)
|
||||
{
|
||||
OnTaskCompleted(startTime, DateTime.UtcNow, TaskCompletionStatus.Aborted, null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1098,7 +1098,7 @@ namespace MediaBrowser.Server.Implementations.Library
|
|||
|
||||
try
|
||||
{
|
||||
await task.Run(innerProgress, cancellationToken);
|
||||
await task.Run(innerProgress, cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
catch (OperationCanceledException)
|
||||
{
|
||||
|
|
|
@ -285,10 +285,10 @@
|
|||
"ButtonHelp": "Help",
|
||||
"OptionAllowUserToManageServer": "Allow this user to manage the server",
|
||||
"HeaderFeatureAccess": "Feature Access",
|
||||
"OptionAllowMediaPlayback": "Media playback",
|
||||
"OptionAllowBrowsingLiveTv": "Live TV",
|
||||
"OptionAllowDeleteLibraryContent": "Media deletion",
|
||||
"OptionAllowManageLiveTv": "Live TV recording management",
|
||||
"OptionAllowMediaPlayback": "Allow media playback",
|
||||
"OptionAllowBrowsingLiveTv": "Allow Live TV access",
|
||||
"OptionAllowDeleteLibraryContent": "Allow media deletion",
|
||||
"OptionAllowManageLiveTv": "Allow Live TV recording management",
|
||||
"OptionAllowRemoteControlOthers": "Allow remote control of other users",
|
||||
"OptionAllowRemoteSharedDevices": "Allow remote control of shared devices",
|
||||
"OptionAllowRemoteSharedDevicesHelp": "Dlna devices are considered shared until a user begins controlling it.",
|
||||
|
@ -1362,8 +1362,8 @@
|
|||
"LabelEnableSingleImageInDidlLimitHelp": "Some devices will not render properly if multiple images are embedded within Didl.",
|
||||
"TabActivity": "Activity",
|
||||
"TitleSync": "Sync",
|
||||
"OptionAllowSyncContent": "Sync",
|
||||
"OptionAllowContentDownloading": "Media downloading",
|
||||
"OptionAllowSyncContent": "Allow Sync",
|
||||
"OptionAllowContentDownloading": "Allow media downloading",
|
||||
"NameSeasonUnknown": "Season Unknown",
|
||||
"NameSeasonNumber": "Season {0}",
|
||||
"LabelNewUserNameHelp": "Usernames can contain letters (a-z), numbers (0-9), dashes (-), underscores (_), apostrophes ('), and periods (.)",
|
||||
|
|
Loading…
Reference in New Issue
Block a user