Try-Catch循环直到成功

时间:2015-11-27 11:49:41

标签: c#

bool hasCopiedArtikelnum = false;

while (hasCopiedArtikelnum == false)
{
    try
    {
        artikelnum = Clipboard.GetText();
        hasCopiedArtikelnum = true;
    }
    catch {}
}

我希望程序在成功复制之前保持循环。将其他东西放入“尝试”工作吗?或者该程序也将>>尝试<<将hasCopiedArtikelnum设置为true?

3 个答案:

答案 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建议更好的解决方案。