当我把一个按钮的点击和一个异步联系人的调用结合起来时,就会出现无限循环
当我将按钮点击事件与手机上的联系人呼叫(WP7)相结合时,我会有问题.问题在于,在单击事件进行填充之前,没有运行异步触点呼叫的搜索程序事件.这将导致等待异步电话的无限循环. 在我的简化代码示例中,我有一个复选框和一个按钮.按下按钮时,请单击事件.如果检查了复选框,则将进行异步搜索ASERASYNC调用以获取电话上的所有联系人. 如果检查复选框,我如何避免该代码会导致该代码的无限循环: private bool searchCompleted = false; private Contact[] contacts; private void button1_Click(object sender, RoutedEventArgs e) { Dictionary contactList = new Dictionary; // ... add contact
10 2024-04-23
编程技术问答社区
C# 来自另一个线程的未处理的异常一直在循环。
我有一个非常简单的线程.线程对象唯一要做的是throw new Exception();.之所以这样做是因为我需要测试如果在我的应用程序中的单独线程中发生异常情况.我已经使用"真实"运行时间异常测试了这一点,我的问题是相同的. 我在称呼线程之前要做的是: AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException; Application.Current.DispatcherUnhandledException += CurrentOnDispatcherUnhandledException; //To handle exceptions in another thread private void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs unhandledExc
2 2024-04-23
编程技术问答社区
无限循环消耗100%的CPU
我被困在需要生成一些Hz的定义频率的情况下.我尝试了多媒体计时器和互联网上可用的所有其他内容,但到目前为止,一个无限的循环具有某些IF-ELSE条件,这给了我最好的结果.但是这种方法的问题在于,它几乎消耗了所有CPU,没有其他应用程序无法正常工作的空间. 我需要一种具有生成一些Hz频率到kHz的算法. 我正在使用c#. 使用Windows Plateform 解决方案 您无法在非现实时间平台上准确生成固定频率的信号.随时,来自同一或其他过程的高优先级线程可能会阻止线程的执行.例如.当GC线程启动时,工人线程将被悬挂. 话虽如此,您允许您拥有的抖动是什么?您需要支持的最高频率是多少? 其他解决方案 我解决问题的方法是生成"声波"并在声卡上输出. 有多种方法可以从C#访问您的声卡,例如使用XNA. 正如其他人指出的那样,使用CPU并不是一个好方法. 其他解决方案 在循环中使用Thread.Sleep(delay); 它是减少处理器的使用
12 2024-04-22
编程技术问答社区
这怎么会造成无尽的循环呢?
我坚持的一些遗产代码被困在一个无限的循环中(因此我本人似乎是一个);我不知道为什么/如何. 这是应用程序的入口点,它可以实例化主形式(frmcentral): 代码展示 public static int Main(string [] args) { try { AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.UnhandledException += new UnhandledExceptionEventHandler(GlobalExceptionHandler); string name = Assembly.GetExecutingAssembly().GetName().Name; MessageBox.Show(string.Format("Executing assembly is {0}",
16 2024-04-20
编程技术问答社区
无限循环使TimeManager失效
我在WPF应用程序中遇到一个非常棘手的缺陷来追踪.错误消息是: 似乎是由反复产生的无限环路 在布局/渲染过程中使TimManager无效. 堆栈跟踪(对于值得的值)是: 在system.windows.media.mediacontext.rendermessagehandlercore(对象) jusive -compositionTarget)at system.windows.media.mediacontext.rendermessagehandler(对象 jusive -compositionTarget)at system.windows.threading.exceptionwrapper.internalrealcall(委托 回调,对象args,int32 numargs)at 女士internal.threading.exceptionfilterhelper.trycatchwhen(对象 来源,委托方法,对象args,int32 numargs
14 2024-04-18
编程技术问答社区
Enumerator.MoveNext()的奇怪行为
有人可以解释为什么此代码在无穷循环中运行吗?为什么MoveNext()返回true总是? var x = new { TempList = new List { 1, 3, 6, 9 }.GetEnumerator() }; while (x.TempList.MoveNext()) { Console.WriteLine("Hello World"); } 解决方案 List.GetEnumerator() 返回一种可变的值类型( List.Enumerator ).您将该值存储在匿名类型中. 现在,让我们看看这是什么: while (x.TempList.MoveNext()) { // Ignore this } 那等同于: while (true) { var tmp = x.TempList; var result = tmp.MoveNext(); if (!result) {
8 2024-04-17
编程技术问答社区
为什么这种方法会导致无限循环?
我的一位同事来找我一个问题,该方法导致无限循环.实际的代码有点过于涉及到此处,但是从本质上讲,问题归结为: private IEnumerable GoNuts(IEnumerable items) { items = items.Select(item => items.First(i => i == item)); return items; } 此应该(您认为)只是创建列表副本的一种非常低效的方法.我打电话给: var foo = GoNuts(new[]{1,2,3,4,5,6}); 结果是无限循环.奇怪. 我认为修改参数是一件坏事,所以我稍微更改了代码: var foo = items.Select(item => items.First(i => i == item)); return foo; 有效的.也就是说,程序完成;没有例外. 更多的实验表明这也有效: items = items.Se
24 2024-04-17
编程技术问答社区
在线程的无限循环中,cpu使用率增加到100%。
我正在ASP.NET Web应用程序中实现基于Web的聊天平台,并且我使用类似于长期投票的技术.我的意思是,我将每个Web请求从客户端保存在特定的时间段(超时)或直到新消息到达,然后将响应发送给客户端. 我将连接的客户端保存在内存(字典对象)中,并且当将新消息发送到客户端时,我将此消息写入接收者客户端的消息数组中. 客户需要发送请求以获取自己的消息,我将此请求保留在存储器中的数组中. 我正在使用异步HTTP处理程序进行侦听客户端请求,我将Web请求保留在存储器中的数组中.我使用线程从内存(为每个客户端创建的字典中)持续检查新消息. 我不使用.NET线程池线程检查新消息或定时发布Web请求.我创建类似的线程: System.Threading.Thread t = new Thread(new ThreadStart(QueueCometWaitRequest_WaitCallback)); t.IsBackground = false; t.Start();
16 2024-04-15
编程技术问答社区
奇怪的字符串.IndexOf behavour
我写了以下片段,以摆脱文本平板中的过多空间 int index = text.IndexOf(" "); while (index > 0) { text = text.Replace(" ", " "); index = text.IndexOf(" "); } 通常,这效果很好,尽管相当精确且可能效率低下. 问题 当文本包含" - "出于某些bizzare原因时,索引返回匹配! 替换功能不会删除任何内容,然后将其卡在无尽的循环中. 有什么想法是string.indexof? 的情况 解决方案 啊,文字的喜悦. 您最有可能在那里拥有的东西,但在发布时迷路了,是"软连字符". 要重现问题,我在 linqpad 中尝试了此代码.: void Main() { var text = "Test1 \u00ad Test2"; int index = text.IndexOf(" "); whi
18 2024-04-13
编程技术问答社区
如何在用户按下转义键时 "暂停 "一个控制台应用程序?
我正在创建将执行无限过程的C#控制台应用程序.当用户按下逃生键时,如何将应用程序"暂停"? 用户按下逃生键后,我希望该选项要么退出应用程序,要么将循环继续下去.我不希望在此过程中任何不连续性.如果我在步骤100下按Esc,我应该能够在步骤101中立即取回. 这是我到目前为止的方法: // Runs the infinite loop application public static void runLoop() { int count = 0; while (Console.ReadKey().Key!= ConsoleKey.Escape) { WriteToConsole("Doing stuff.... Loop#" + count.ToString()); for (int step = 0; step
6 2024-04-13
编程技术问答社区
如何处理一个 "无限的 "IEnumerable?
一个"无限" iEnumerable的微不足道的例子是 IEnumerable Numbers() { int i=0; while(true) { yield return unchecked(i++); } } 我知道, foreach(int i in Numbers().Take(10)) { Console.WriteLine(i); } 和 var q = Numbers(); foreach(int i in q.Take(10)) { Console.WriteLine(i); } 两者都可以正常工作(并打印出数字0-9). 但是,在复制或处理q(例如q)时是否有任何陷阱?我可以依靠这一事实,总是被评估为"懒惰"吗?产生无限循环有危险吗? 解决方案 是的,您可以保证上面的代码将懒惰地执行.当它看起来(在您的代码中)就像您永远循环一样,您的代码实际上会产生这样的东西: IEnumerab
10 2024-04-13
编程技术问答社区
对CPU友好的无限循环
编写无限循环很简单: while(true){ //add whatever break condition here } 这将丢弃CPU性能.此执行线程将尽可能从CPU的功率中获取. 降低对CPU影响的最佳方法是什么? 添加一些Thread.Sleep(n)应该可以解决问题,但是为Sleep()方法设置高超时值可能表明对操作系统的无反应应用. 假设我需要在控制台应用程序中每分钟左右执行任务. 我需要保持Main()在"无限循环"中运行,而计时器将解雇可以完成工作的事件.我想保持Main()对CPU的影响最低. 您建议什么方法. Sleep()可以是可以的,但是正如我已经提到的那样,这可能表明操作系统的无反应线程. 以后编辑: 我想更好地解释我在寻找的东西: 我需要一个控制台应用而不是Windows服务.控制台应用程序可以在Windows Mobile 6.x系统上模拟Windows Services. ,只要Windows M
8 2024-04-11
编程技术问答社区
哪个是正确的C#无限循环,for(;;)或while(true)?
回到我的C/C ++天,将"无限环"编码为 while (true) 感觉更自然,对我来说似乎更为明显,而不是 for (;;) 与 pc-lint "> pc-lint 在1980年代后期,随后的最佳实践讨论破裂了我这个习惯.此后,我使用for控制语句对循环进行了编码.今天,很长一段时间以来,也许我第一次需要作为C#开发人员的无限循环,我面临着同样的情况.其中一个是正确的,另一个不正确? 解决方案 while(true) { } 一直是我使用的东西,我看到其他人用来手动打破的循环. 其他解决方案 C#编译器将同时转换 for(;;) { // ... } 和 while (true) { // ... } 进入 { :label // ... goto label; } 两者的CIL都是相同的.大多数人发现while(true)更容易阅读和理解. for(;;)相当神秘.
10 2024-04-10
编程技术问答社区
使用Visual Studio 2012可以不小心伤害系统文件或个人文件吗?
我为这件事缺乏知识而道歉,但这对我来说非常重要,所以至少我会尝试一下. 我在Windows 7 Ultimate上使用Visual Studio 2012 Express, 我写了一些非常基本的愚蠢程序来练习C语言的结构.不幸的是,我写的一种方法的停止条件错误,它进入了一个无限的循环,更糟糕的部分超过了给定的阵列边界.我将在下面添加代码,但代码不是我的主要关注点,我已经设法修复了它,我只想知道我是否可以损害我的系统或个人文件(视频,照片,办公室文件等)给定方法是因为当我尝试运行此代码时,发生了一件可怕的事情,我的PC开始每0.5秒无休地"哔哔",而我无能为力,该程序是在无限的循环中,我管理了仅使用Ctrl + Alt + Del停止这种"乐趣".我写了以前崩溃了很多次的代码,但我不确定我的PC第一次出现声音发出声音.我希望专家可以帮助我解决这个问题.非常感谢. 引起所有问题的无限循环的方法是" printarrhero": #include #inclu
10 2024-04-10
编程技术问答社区
C语言程序无限循环
当我运行程序时,它会无限期地要求密码.我输入正确的密码,但它只是循环回去.我编译时没有错误.要编译,我使用了: gcc -ansi -W -Wall -pedantic -o prog myProgram.c chmod +x prog 我正在运行Ubuntu Trusty.这是与密码相关的代码: char string[100] = ""; int main(void) { char correctPassword[25] = "myPassword"; char password[25] = ""; system("clear"); printf("Enter your password:\n"); scanf("%s", password); if (password == correctPassword) { system("clear"); printf("Enter
22 2024-04-09
编程技术问答社区
当scanf EOF循环发生错误时
我是C的初学者,我有问题我无法弄清楚,并且无法在其他线程上找到解决方案. 我正在尝试从键盘输入/txt文件读取以下代码的整数: int grades[MAX_GRADES_LENGTH]={0}, histogram[HISTOGRAM_SIZE]={0}; int maxGradesHistogramBucket=0, median=0, gradesLength=0; double avg=0.0; int grade=0; printf("Enter grades:\n"); while (scanf("%d",&grade) != EOF) { grades[gradesLength]=grade; gradesLength=gradesLength+1; } 我应该在等级[]数组中设置这些"等级",并计算沿环数阵列的长度. 以某种方式循环是行为不端的,似乎有些输入可以对循环进行,但是对于某些输入(实际上是大多数)(实际上是其中的大多数),S
30 2024-04-09
编程技术问答社区
C语言中while循环中的切换语句
循环中有几个有关开关语句的帖子,除了至少在我所看到的情况下没有一个在C中完成的帖子. C ++可以创建布尔表达式,但我不知道.但在C中不可以.我有一个包含开关控件的lime循环.但是,当我在交换机中编写断路语句时,它可以回到循环的开头,并使我的程序永远运行.忽略我使用的功能,因为它们可以肯定地工作.我只需要对筑巢的处理进行一些澄清.谢谢! Here is my main.c: while(1) { printf("0) Exit\n1) List Tasks\n2) Add Task\n"); printf("3)Delete Task\n4) Add Task From File\n"); printf("What would you like to do?\n"); fge
18 2024-04-08
编程技术问答社区
HAL_Delay()卡在一个无限循环中
我被HAL_DELAY()函数所困.当我调用此函数hal_delay()时,控制卡在无限循环中. 在搜索问题时,我发现了这个 在此特定的评论中,我引用了"链接文件有问题,请使用附加的文件.您需要单独映射两个内存库,因此首先是SRAM1 96K,然后是32K的SRAM2.我认为应该报告这一点.作为Cubemx中的错误,因为它会生成不良的链接文件."并且有两个带有.ld扩展名的文件. 我正在寻找的是如何在项目中使用此文件或其他任何更好的选择来处理此问题. ps.我正在使用STM32L476 Discovery Board,Cube MX 5.0.0和Attolic True Studio. 编辑 我的项目正在进行RS485通信,从我获取数据的位置,并且我有两个任务,并在Max7219显示上显示,并使用SIM800 GSM模块将其发送到Internet. 控制控制的代码.请注意,仅在执行GSM任务时才调用此功能. void vMyDelay(uint1
20 2024-04-08
编程技术问答社区
为什么这个例子在C语言中会陷入无限循环?
在下面的示例中,如果我在Mac OS X终端中输入一个字符,则该程序将陷入无限循环,在行之后打印Please enter a number:行,并且永远不会允许用户输入任何内容.此代码怎么了?什么是修复? 我想以某种方式更改代码,如果未输入一个数字,则会提示用户使用错误消息,并要求再次输入一个数字. #include int main(int argc, const char * argv[]) { int number = 0, isnumber; getagin: printf("Please enter a number:\n"); isnumber = scanf("%i", &number); if(isnumber) { printf("You enterd a number and it was %i\n", number); } else { printf("You di
12 2024-04-07
编程技术问答社区
scanf在C语言中导致无限循环
我对C是相对较新的,但是我已经编程了几年. 我正在为大学课写一个课程,我很困惑为什么不调用SCANF功能,导致无限循环. 我尝试在功能外面放置扫描仪,两次从内部,一次从内部和其他几种方式称为两次.我在网上阅读,fflush可能会有所帮助,但没有 有什么建议? // store starting variables int players; // print title printf("*------------------------------------*\n"); printf("| |\n"); printf("| Wheel |\n"); printf("| of |\n"); printf("| Fortune
6 2024-04-07
编程技术问答社区