VS2010——没有进入方法即提示错误

kokokooo 2017-07-21 10:50:27
描述一下背景:
手上有一套程序需要实现多款外接产品的兼容使用,通过预设置的productType选择了需要启用的外接硬件(每次使用只会选择一种外接硬件),程序启动后就通过switch语句对对应类型的产品进行初始化和使用。
例如现在有A,B,C,D 4款硬件需要通过软件进行使用,那么启动程序后,先对选定产品进行初始化:
switch(productType)
{
case A:
initialA();
case B:
initialB();
case C:
initialC();
case D:
initialD();
}
然后启动后,通过界面操作硬件或者修改硬件参数就是:
switch(productType)
{
case A:
DoA();
case B:
DoB();
case C:
DoC();
case D:
DoD();
}
修改参数:
private void parameterchange()
{
switch(productType)
{
case A:
if(A产品存在)
{
ChangeParameterA();
}
case B:
if(B产品存在)
{
ChangeParameterB();
}
case C:
if(C产品存在)
{
ChangeParameterC();
}
case D:
if(D产品存在)
{
ChangeParameterD();
}
}
}
好了,现在描述我的问题:
程序使用的A产品的dll不是适合当前64位的系统,但是我当前开发使用产品B,所以不去处理,程序初始化和选择性使用产品B的时候都无异常,但是在进入参数设置界面,调用parameterchange()时,直接跳到catch里提示A的dll无法调用,逐步想进入parameterchange()看异常出现的语句,但是根本无法进入,在parameterchange()里进入的第一条语句下断点也无法跑到断点位置。
补充:目前在4台PC上测试,只在一台PC上会有问题,会跟系统有关系?

switch是什么机制,我不会跑到A分支,它会对A里的语句进行预处理吗?请帮忙分析一下~
...全文
279 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kokokooo 2017-07-21
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
[quote=引用 2 楼 kokokooo 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] switch 就是条件语句,每次case完了 要break 一下,实在没有用过 就查一下用法。
呃呃~我那不是真正的代码,意思是示意说明一下情况而已。[/quote] 你选择的产品B,进行参数设置,怎么会执行A,说明此时 的productType 是A的类型,也就执行 DoA 方法。应该找出productType 改变的原因。[/quote] 没有说参数设置时执行了A,断点观察根本就进入不了parameterchange(),直接到调用parameterchange()的函数里跳到catch,提示的错误我看到时说调用A产品的dll出错~我在parameterchange()里注释掉case A里的内容,就不会弹错,可以进入parameterchange()。——也属于奇离古怪问题的范畴!
kokokooo 2017-07-21
  • 打赏
  • 举报
回复
我不是新手~不是! ProductType是代码里宏定义出来的,非开放给用户设置使用
kokokooo 2017-07-21
  • 打赏
  • 举报
回复
引用 3 楼 duanzi_peng 的回复:
[quote=引用 2 楼 kokokooo 的回复:] [quote=引用 1 楼 duanzi_peng 的回复:] switch 就是条件语句,每次case完了 要break 一下,实在没有用过 就查一下用法。
呃呃~我那不是真正的代码,意思是示意说明一下情况而已。[/quote] 你选择的产品B,进行参数设置,怎么会执行A,说明此时 的productType 是A的类型,也就执行 DoA 方法。应该找出productType 改变的原因。[/quote] 我确定产品类型没有错误,举例初始化、使用没有问题,有两点说明:1.如果switch不会跑到的分支也会被预处理,那么前面就该出问题了,有矛盾;2.产品类型没有问题,不会跑到非当前使用的分支; 另外,我也补充说明了,其它电脑没问题,这套程序也是使用很久了的,现在问题的发生是更改为64位系统,之前有一款硬件(例子里的A)的dll可能不兼容,但是由于暂时没用,也没去更新它。也许大家不需要去考虑我代码的正确性,而是去考虑系统方面影响会比较妥当~
exception92 2017-07-21
  • 打赏
  • 举报
回复
引用 2 楼 kokokooo 的回复:
[quote=引用 1 楼 duanzi_peng 的回复:] switch 就是条件语句,每次case完了 要break 一下,实在没有用过 就查一下用法。
呃呃~我那不是真正的代码,意思是示意说明一下情况而已。[/quote] 你选择的产品B,进行参数设置,怎么会执行A,说明此时 的productType 是A的类型,也就执行 DoA 方法。应该找出productType 改变的原因。
kokokooo 2017-07-21
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
switch 就是条件语句,每次case完了 要break 一下,实在没有用过 就查一下用法。
呃呃~我那不是真正的代码,意思是示意说明一下情况而已。
exception92 2017-07-21
  • 打赏
  • 举报
回复
switch 就是条件语句,每次case完了 要break 一下,实在没有用过 就查一下用法。

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧