58 lines
1.6 KiB
C#
58 lines
1.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace GTPCorrgir
|
|
{
|
|
public static class ClipboardHelper
|
|
{
|
|
private static readonly int MaxRetries = 5;
|
|
private static readonly int RetryDelay = 100; // milliseconds
|
|
|
|
public static async Task<bool> SetText(string text)
|
|
{
|
|
for (int i = 0; i < MaxRetries; i++)
|
|
{
|
|
try
|
|
{
|
|
await Task.Delay(RetryDelay);
|
|
await System.Windows.Application.Current.Dispatcher.InvokeAsync(() =>
|
|
{
|
|
System.Windows.Clipboard.SetText(text);
|
|
});
|
|
return true;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
if (i == MaxRetries - 1) throw;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public static async Task<string> GetText()
|
|
{
|
|
string text = null;
|
|
for (int i = 0; i < MaxRetries; i++)
|
|
{
|
|
try
|
|
{
|
|
await Task.Delay(RetryDelay);
|
|
text = await System.Windows.Application.Current.Dispatcher.InvokeAsync(() =>
|
|
{
|
|
return System.Windows.Clipboard.GetText();
|
|
});
|
|
return text;
|
|
}
|
|
catch (Exception)
|
|
{
|
|
if (i == MaxRetries - 1) throw;
|
|
}
|
|
}
|
|
return text;
|
|
}
|
|
}
|
|
}
|