public static void SetDataObject(object data, bool copy, int retryTimes, int retryDelay)
{
if (data == null)
throw new ArgumentNullException("data");
if (retryTimes < 0)
throw new ArgumentOutOfRangeException("retryTimes");
if (retryDelay < 0)
throw new ArgumentOutOfRangeException("retryDelay");
// MS implementation actually puts data to clipboard even when retryTimes == 0
bool retry = true;
do
{
retry = false;
--retryTimes;
try
{
SetDataObjectImpl(data, copy);
} catch (ExternalException) {
if (retryTimes <= 0)
throw;
retry = true;
Threading.Thread.Sleep(retryDelay);
}
} while (retry && retryTimes > 0);
}