C# 尝试捕捉循环直到成功

C# 尝试捕捉循环直到成功,c#,C#,我希望程序继续循环,直到他成功复制。在“尝试”中加入其他东西是否有效?或者该程序也将>>尝试while循环,同时继续执行,直到hasCopiedArtikelnum为真 这意味着您可以将任何内容放入try块中,并且只要hasCopiedArtikelnum=true位于末尾,它就会一直迭代,直到所有内容都完成 如果Clipboard.GetText()在未准备好完成时抛出异常,则执行将跳转hasCopiedArtikelnum,并保持false是,您可以使用catch(exception){}捕

我希望程序继续循环,直到他成功复制。在“尝试”中加入其他东西是否有效?或者该程序也将>>尝试while循环,同时继续执行,直到
hasCopiedArtikelnum
为真

这意味着您可以将任何内容放入
try
块中,并且只要
hasCopiedArtikelnum=true
位于末尾,它就会一直迭代,直到所有内容都完成


如果
Clipboard.GetText()
在未准备好完成时抛出异常,则执行将跳转
hasCopiedArtikelnum
,并保持
false

是,您可以使用
catch(exception){}
捕获所有异常,然后继续执行。我建议使用最大数量的试过,以防止挂起此操作

我猜您正在解决检索文本的问题。也许还有其他方法可以做到这一点,也许你可以睡X毫秒,比如用定时器每X秒做一次,等等。我想你正在寻找另一种解决方案。此代码将挂起进程,直到它成功检索文本为止。你在找什么活动吗


如果可以,最好不要依赖异常,而(!Clipboard.ContainsText(TextDataFormat.Text))
,正如建议的那样,这是一个更好的解决方案。

似乎您真正想要做的是等待用户将某些内容复制到剪贴板,然后使用
clipboard.ContainsText检查剪贴板中是否包含文本(正如@CodeCaster和@PatrickHofman所建议的)

您可以接收剪贴板事件,如对此问题的回答中所述:


这种方法要好得多,因为您a)不会对控制流使用异常,b)通过避免永久轮询剪贴板来显著减少CPU负载。

XY问题。实际的解决方案是
,而(!Clipboard.ContainsText(TextDataFormat.Text))
。如果您需要帮助修复此代码,请解释您期望它做什么以及它实际做什么。另请参见。异常不适用于管理常见情况。更好的办法是检查价值。在您的情况下,空剪贴板是常见的情况,而不是错误。这似乎是并且应该避免的,因为它将严重浪费系统资源。它除了复制最终用户需要注意的数字之外,没有其他作用。因此,数字将显示在程序的不同标签上。如果没有复制该号码,最终用户将不知道该做什么。我建议将尝试次数限制在固定的数目,如100次尝试、1000次尝试或其他,这样它将在某个点终止,并显示一条消息,说明在xyz尝试后它不起作用。只需使用int而不是boolean,检查int<100,并在try-block的末尾增加它。这可能会不必要地挂起整个程序。我想我还不太清楚我的意图。程序应自动选择要复制的内容:MouseClickL(489403);发送(“^a”);发送(“^c”);然后执行复制。PS:如何获得注释的灰色文本代码格式?
bool hasCopiedArtikelnum = false;

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