1 //----------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation. All rights reserved.
3 //----------------------------------------------------------------
5 namespace System.Activities.Presentation
7 using System.Threading;
9 using System.Windows.Media.Imaging;
10 using System.Runtime.InteropServices;
12 using System.Diagnostics;
14 // The clipboard may be accessed by other processes.
15 // RetriableClipboard retries several times before giving up.
16 static class RetriableClipboard
18 const int retryCount = 10;
19 const int sleepTime = 50;
21 internal static IDataObject GetDataObject()
23 for (int i = 0; i < retryCount; i++)
27 return Clipboard.GetDataObject();
31 Trace.WriteLine(err.ToString());
36 Thread.Sleep(sleepTime);
42 internal static void SetDataObject(object data, bool copy)
44 for (int i = 0; i < retryCount; i++)
48 Clipboard.SetDataObject(data, copy);
53 Trace.WriteLine(err.ToString());
58 Thread.Sleep(sleepTime);
63 internal static void SetImage(BitmapSource image)
65 for (int i = 0; i < retryCount; i++)
69 Clipboard.SetImage(image);
74 Trace.WriteLine(err.ToString());
79 Thread.Sleep(sleepTime);