bool hasCopiedArtikelnum = false;
while (hasCopiedArtikelnum == false)
{
try
{
artikelnum = Clipboard.GetText();
hasCopiedArtikelnum = true;
}
catch {}
}
我希望程序在成功复制之前保持循环。将其他东西放入“尝试”工作吗?或者该程序也将>>尝试<<将hasCopiedArtikelnum设置为true?
答案 0 :(得分:5)
您真正想要做的就是等到用户将某些内容复制到剪贴板,然后使用Clipboard.ContainsText
检查剪贴板中是否包含文本(正如@CodeCaster和@PatrickHofman已经建议的那样)
您可以按照此问题的答案中所述接收剪贴板事件:Clipboard event C#。
这种方法要好得多,因为你a)不会使用控制流的异常,b)通过避免永久轮询剪贴板来显着减少CPU负载。
答案 1 :(得分:3)
while
循环,同时继续执行,直到hasCopiedArtikelnum
为真。
这意味着您可以将任何内容放入try
块中,只要hasCopiedArtikelnum = true
结束,它就会一直迭代直到所有内容都完成。
如果Clipboard.GetText()
在未准备好完成时抛出异常,则执行将跳转hasCopiedArtikelnum
并保持false
答案 2 :(得分:2)
是的,您可以使用catch (Exception) {}
捕获所有异常并继续。我建议使用最大数量的尝试,以防止此操作挂起。
我猜你正在解决检索文本的问题。也许有其他方法可以这样做,也许你可以睡X毫秒,例如使用计时器一次X秒,等等。我猜你还有另一个解决方案。此代码将挂起您的进程,直到成功检索文本。你在寻找一些活动吗?
最好不要依赖异常,如果可以,可能while (!Clipboard.ContainsText(TextDataFormat.Text))
,CodeCaster建议更好的解决方案。