Рассмотрим эту небольшую программу:Странное поведение с буфером обмена в C# консольное приложение
class Program
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("Please copy something into the clipboard.");
WaitForClipboardChange();
Console.WriteLine("You copied " + Clipboard.GetText());
Console.ReadKey();
}
static void WaitForClipboardChange()
{
Clipboard.SetText("xxPlaceholderxx");
while (Clipboard.GetText() == "xxPlaceholderxx" &&
Clipboard.GetText().Trim() != "")
Thread.Sleep(90);
}
}
Я бегу, и я скопировать строку из блокнота. Но программа просто получает пустую строку из буфера обмена и пишет «Вы скопировали».
В чем проблема? Есть ли что-то, что делает доступ к буфер обмена правдоподобным в консольном приложении?
Это профиль клиента Windows 7 SP1 x86, .NET 4.
Я не думаю, что это будет иметь значение, но попробуйте '! String.IsNullOrWhitespace (Clipboard.GetText())' в цикле while. – gunr2171
Спасибо, попробовал! Однако это не повлияло. – LTR
@ gunr2171 Вы имеете в виду no-op вторую половину времени? Если что-то == «foo», то то, что он не равно, не имеет значения ... PS - я бы проверил, что 'Clipboard.GetText()' возвращает первый раз, когда это интересное значение (и каждый раз после него). –