mirror of
https://github.com/ZuneDev/ZuneShell.dll.git
synced 2026-07-27 13:11:51 -07:00
88 lines
2.9 KiB
C#
88 lines
2.9 KiB
C#
// Decompiled with JetBrains decompiler
|
|
// Type: ZuneUI.AddTransientMediaTask
|
|
// Assembly: ZuneShell, Version=4.7.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
|
|
// MVID: FC8028F3-A47B-4FB4-B35B-11D1752D8264
|
|
// Assembly location: C:\Program Files\Zune\ZuneShell.dll
|
|
|
|
using Microsoft.Zune.Shell;
|
|
using System;
|
|
using System.Threading;
|
|
|
|
namespace ZuneUI
|
|
{
|
|
internal class AddTransientMediaTask
|
|
{
|
|
private string _filePath;
|
|
private MediaType _mediaType;
|
|
private int _dbMediaId;
|
|
private bool _fFileAlreadyExists;
|
|
private bool _fAddSuccessful;
|
|
private ManualResetEvent _event;
|
|
|
|
private AddTransientMediaTask(string filePath, MediaType mediaType)
|
|
{
|
|
this._filePath = filePath;
|
|
this._mediaType = mediaType;
|
|
}
|
|
|
|
private void TaskFunction(object obj)
|
|
{
|
|
this._dbMediaId = -1;
|
|
this._fFileAlreadyExists = false;
|
|
this._fAddSuccessful = false;
|
|
if (!string.IsNullOrEmpty(this._filePath))
|
|
this._fAddSuccessful = ZuneApplication.AddTransientMedia(this._filePath, this._mediaType, out this._dbMediaId, out this._fFileAlreadyExists);
|
|
if (this._event == null)
|
|
return;
|
|
this._event.Set();
|
|
}
|
|
|
|
private bool RunSyncTask(
|
|
TimeSpan timeout,
|
|
out int dbMediaId,
|
|
out bool fFileAlreadyExists,
|
|
out bool fTimedout)
|
|
{
|
|
dbMediaId = -1;
|
|
fFileAlreadyExists = false;
|
|
fTimedout = false;
|
|
bool flag = false;
|
|
if (!string.IsNullOrEmpty(this._filePath))
|
|
{
|
|
if (timeout.TotalSeconds > 0.0)
|
|
{
|
|
this._event = new ManualResetEvent(false);
|
|
ThreadPool.QueueUserWorkItem(new WaitCallback(this.TaskFunction));
|
|
if (this._event.WaitOne(timeout, false))
|
|
{
|
|
dbMediaId = this._dbMediaId;
|
|
fFileAlreadyExists = this._fFileAlreadyExists;
|
|
flag = this._fAddSuccessful;
|
|
}
|
|
else
|
|
fTimedout = true;
|
|
}
|
|
else
|
|
{
|
|
this.TaskFunction(null);
|
|
dbMediaId = this._dbMediaId;
|
|
fFileAlreadyExists = this._fFileAlreadyExists;
|
|
flag = this._fAddSuccessful;
|
|
}
|
|
}
|
|
return flag;
|
|
}
|
|
|
|
public static bool AddTransientMediaWithTimeout(
|
|
string filePath,
|
|
MediaType mediaType,
|
|
TimeSpan timeout,
|
|
out int dbMediaId,
|
|
out bool fFileAlreadyExists,
|
|
out bool fTimedout)
|
|
{
|
|
return new AddTransientMediaTask(filePath, mediaType).RunSyncTask(timeout, out dbMediaId, out fFileAlreadyExists, out fTimedout);
|
|
}
|
|
}
|
|
}
|