public void ActionProgress() { var a1 = AsyncAction <int> .CreateCompleted(); var a2 = AsyncAction <int> .CreateCompleted(); Assert.AreEqual(AsyncStatus.Completed, a1.Status); Assert.AreSame(a2, a1); a1 = AsyncAction <int> .CreateCanceled(); a2 = AsyncAction <int> .CreateCanceled(); Assert.ThrowsException <OperationCanceledException>(() => a1.GetResults()); Assert.AreEqual(AsyncStatus.Canceled, a1.Status); Assert.AreSame(a2, a1); a1 = AsyncAction <int> .CreateFault(); a2 = AsyncAction <int> .CreateFault(); Assert.AreEqual(AsyncStatus.Error, a1.Status); Assert.ThrowsException <Exception>(() => a1.GetResults()); Assert.IsNotNull(a1.ErrorCode); Assert.AreSame(a2, a1); a1 = AsyncAction <int> .CreateFault(new InvalidOperationException("text")); Assert.AreEqual(AsyncStatus.Error, a1.Status); Assert.ThrowsException <InvalidOperationException>(() => a1.GetResults()); Assert.IsNotNull(a1.ErrorCode); Assert.AreEqual("text", a1.ErrorCode.Message); a1.Close(); Assert.IsNotNull(a1.ErrorCode); Assert.AreEqual("text", a1.ErrorCode.Message); }
/// <summary> /// Show share UI. /// </summary> /// <param name="manager"><see cref="DataTransferManager"/> of sharing.</param> /// <param name="dataPackageProvider">Provides <see cref="DataPackage"/> to share.</param> /// <exception cref="ArgumentNullException"><paramref name="manager"/> or <paramref name="dataPackageProvider"/> is <see langword="null"/>.</exception> /// <exception cref="NotSupportedException">Sharing is not supported.</exception> public static IAsyncAction ShareAsync(this DataTransferManager manager, Func <IAsyncOperation <DataPackage> > dataPackageProvider) { if (manager is null) { throw new ArgumentNullException(nameof(manager)); } if (dataPackageProvider is null) { throw new ArgumentNullException(nameof(dataPackageProvider)); } if (!DataTransferManager.IsSupported()) { return(AsyncAction.CreateFault(new NotSupportedException())); } var action = new AsyncAction(); new ShareHandlerStorage(manager, dataPackageProvider, action); DataTransferManager.ShowShareUI(); return(action); }