Change-Id: Iaf1c666ec3440bfdb4b6f7d1852f3312d81544c7
Signed-off-by: coderhyme <jhyo.kim@samsung.com>
{
var tcs = new TaskCompletionSource<bool>();
{
var tcs = new TaskCompletionSource<bool>();
- using (var cbKeeper = ObjectKeeper.Get(GetScanCompletedCallback(tcs)))
+ using (var cbKeeper = ObjectKeeper.Get(GetScanCompletedCallback(tcs, cancellationToken)))
using (RegisterCancellationAction(tcs, folderPath, cancellationToken))
{
using (RegisterCancellationAction(tcs, folderPath, cancellationToken))
{
Interop.Content.ScanFolder(folderPath, recursive, cbKeeper.Target)
.ThrowIfError("Failed to scan");
Interop.Content.ScanFolder(folderPath, recursive, cbKeeper.Target)
.ThrowIfError("Failed to scan");
- private static Interop.Content.MediaScanCompletedCallback GetScanCompletedCallback(TaskCompletionSource<bool> tcs)
+ private static Interop.Content.MediaScanCompletedCallback GetScanCompletedCallback(TaskCompletionSource<bool> tcs,
+ CancellationToken cancellationToken)
{
return (scanResult, _) =>
{
if (scanResult == MediaContentError.None)
{
{
return (scanResult, _) =>
{
if (scanResult == MediaContentError.None)
{
- tcs.TrySetResult(true);
+ if (cancellationToken.IsCancellationRequested)
+ {
+ tcs.TrySetCanceled();
+ }
+ else
+ {
+ tcs.TrySetResult(true);
+ }
}
Interop.Content.CancelScanFolder(folderPath).ThrowIfError("Failed to cancel scanning");
}
Interop.Content.CancelScanFolder(folderPath).ThrowIfError("Failed to cancel scanning");