代码-程序运行和调试的问题

问题描述

程序运行和调试的问题

List userList = new List
{
new UserModel{ UserName="jiejiep", UserAge = 26},
new UserModel{ UserName="xiaoyi", UserAge = 25},
new UserModel{ UserName="zhangzetian", UserAge=24}
};
public class TempClass
{
public UserModel um
{
get;
set;
}

    public void ShowMessage(object obj)
    {
        Thread.Sleep(1000);
        MessageBox.Show(um.UserName);
    }
}

复制代码
复制代码
TempClass tempCls = new TempClass();
foreach (var u in userList)
{
tempCls.um = u;

         ThreadPool.QueueUserWorkItem((obj) =>
         {
            tempCls.ShowMessage(obj);
         });
    }

调试结果和运行结果不同,能不能给我解释一下
都是高手,但是解释的不一样,我该相信谁的?
cazhy和bdmh你俩说的是一个意思吗?

解决方案

多线程程序如果不同步,运行结果无法预料。因为线程谁执行快,谁执行慢,谁先谁后都是随机的。

解决方案二:

先表达清楚,什么结果不同,不同在哪

解决方案三:

设置断点,结果jiejiep,xiaoyi,zhangzetian
直接运行:三个zhangzetian

解决方案四:

http://www.cnblogs.com/artech/archive/2009/05/22/1486761.html

解决方案五:

确实不太明白你的问题是什么。我看到了线程池,是不是接过和预期不一致了。能说下结果到底啥样?

解决方案六:

你调试时,给了系统时间,让线程运行完,当运行时,因为线程是异步的,所以当你for循环都结束了,线程可能才开始运行,这时传递的obj都是最后一个

解决方案七:

编译器调试时,在可疑代码段设置断点,然后一步步跟踪,调试,

时间: 2024-09-16 16:07:11

代码-程序运行和调试的问题的相关文章

调试-MFC 程序运行时出现空指针

问题描述 MFC 程序运行时出现空指针 MFC程序在启动过程中对一个变量进行初始化,之后放在定时器里运行,第一次执行时正常的,从第二次开始就出现空指针.采用单步调试每次都进入反编译页面,按F5键再次进入定时器变量依然为空指针,请问大家有没有遇到过这样的问题,怎么解决的?? 解决方案 具体要看程序.像数组越界之类的隐蔽bug也可能造成对变量的无意修改. 解决方案二: python 程序运行时出现DLL load errorjava--程序运行时出现内存溢出VC++程序运行时出现Runtime er

5 internal error-QT程序调试时报错,但程序运行时则不确定报错,是什么原因?

问题描述 QT程序调试时报错,但程序运行时则不确定报错,是什么原因? 调试时报错信息Internal error: pc 0x3ff in read in psymtab, but not in symtab. 解决方案 你有指针方面的问题,调试的时候,编译器会将堆上的内存初始化成特殊值,并且库有一些断言捕获你的代码的异常.发布版为了性能没有这样的初始化,也不执行断言. 所以调试运行往往能发现更多的问题.好好利用调试的这个便利特性检查下你的代码. 解决方案二: http://www.cnblog

Linux下C程序的编辑,编译和运行以及调试

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html 内部邀请码:C8E245J (不写邀请码,没有现金送)国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为"中国PE第一股",市值超1000亿元.  -----------------------------------------------------------------------------

控制-自己编的程序运行时串口被程序自己占用,如何用代码强制关闭重新连接?

问题描述 自己编的程序运行时串口被程序自己占用,如何用代码强制关闭重新连接? 我用vs2010基于MFC编一个小程序,其中有一部分是用单片机转USB串口与电脑程序相连.现在问题是: 不小心动了Usb线的话,程序会卡住,在想打开串口会显示串口被占用(就是自己的程序占用).需要把USB线拔下来才能解决问题.求大侠指导,能不能用代码控制,按个软件上的button,就能自动连接上com1. 求大侠指导! 解决方案 结束进程再重启看看行不行.首先要确定卡死不是驱动的问题,如果是驱动的问题,程序就无能为力了

孙鑫的第一个程序,为什么 调试没有错误,运行后却什么也没有啊?

问题描述 孙鑫的第一个程序,为什么 调试没有错误,运行后却什么也没有啊? #include #include LRESULT CALLBACK WinsunProc( HWND hwnd, // handle to window UINT uMsg, // message identifier WPARAM wParam, // first message parameter LPARAM lParam // second message parameter ); int WINAPI WinM

c#代码-程序不能持续运行问题

问题描述 程序不能持续运行问题 运行状况:我用C#语言编写了一个client端程序,放在阿里云上与Server端(不用我编写)通过网络通信,主要是接收Server端上传上来的数据,但每隔15min会向Server端发送一次命令. 运行现象:当整个程序运行到几十个小时(最长的是82个小时)后,出现"无法向网络连接中写入数据"的报错并指示CircleCallAll()命令代码段出错. 求助问题:请各位大牛们分析一下可能出现问题的原因. 相关代码`:接收数据部分 public class d

mfc-MFC程序运行的时候得到执行的代码行数,怎么得到程序运行的进度信息呢?

问题描述 MFC程序运行的时候得到执行的代码行数,怎么得到程序运行的进度信息呢? MFC程序运行的时候得到执行的代码行数,怎么得到程序运行的进度信息呢? 解决方案 代码行数和进度没有关系.比如说有个循环,你能根据行数知道执行了多少次么还需要执行多少次么?

VC6.0编译建立好的程序,没办法调试,一调试就成汇编,点击变成代码形式就没执行的箭头了。

问题描述 VC6.0编译建立好的程序,没办法调试,一调试就成汇编,点击变成代码形式就没执行的箭头了. VC6.0编译建立好的程序,没办法调试,一调试就成汇编,点击变成代码形式就没执行的箭头了.用OD打开EXE,程序的开始,可以看到有垃圾代码···· 解决方案 其实是读到MFC的系统调用的代码 解决方案二: 你自己的程序代码可以调试,但是mfc代码就可能只有汇编了

sql-access表中字段为空时,程序运行产生中断,大家看下这些代码该怎么修改?

问题描述 access表中字段为空时,程序运行产生中断,大家看下这些代码该怎么修改? 解决方案 将这些字段设置成非可空字段,并且设置默认值为"",可以一劳永逸解决这个问题. 解决方案二: 用try catch来捕获异常 加错误处理