我的应用程序从网络获取数据并在场景中绘制(场景使用手工制作的OpenGL引擎).
它可以工作几个小时.当我不使用我的桌面时,我的显示器因显示器电源管理器信令(dpms)关闭.然后,当我触摸鼠标或键盘时,显示器打开,应用程序挂起(X也挂起).
如果我这样做
xset -dmps
操作系统不使用dpms并且应用程序工作稳定.
这些问题出现在Centos 6和Archlinux中,但是当我在Ubuntu 12.10下运行应用程序时,它运行得很好!
我尝试了不同的NVidia驱动程序.没有效果.
我尝试使用ssh进行远程登录并使用gdb附加到进程.打开监视器后,我无法在进程表中找到该应用程序.
如何诊断问题?当显示器关闭/打开时会发生什么(在OpengGL环境中)?使用dpms时,Ubuntu是否做了一些特别的事情?
我们猜测问题的原因!当监视器关闭时,我们失去了OpenGL上下文.当监视器唤醒时,应用程序挂起(无上下文).根据操作系统的不同,行为的差异是由于监视器连接不同:Kubuntu的监视器连接VGA电缆.所以(可能)它对X行为没有影响.
我写了一个Windows Phone 8.1运行时APP.
我从APP仪表板获得了一些崩溃报告,但不知道如何使用它或如何相应地调试应用程序.在我的本地机器上,我无法重现崩溃.我找不到转储文件.
这是崩溃报告的摘录failures-export_9NBLGGH3THQ9_20150713_20150812.tsv:
9NBLGGH3THQ9
2015-08-01
ba34d7f4-498c-fcd4-e012-7d4bf26a763e
EM_WATCHDOG_TIMEOUT_DEADA444_Caixin.exe!{6A2A0B5A-E7E8-4748-A1AB-9B820BE11753}_Task_disconnected_while_still_running:_server_task_currentState_=_Active,_targetState_=_Active.
caixin.exe!{6A2A0B5A-E7E8-4748-A1AB-9B820BE11753}_Task_disconnected_while_still_running:_server_task_currentState_=_Active,_targetState_=_Active.
d302bc2d.49868ff9ecff2_1.0.0.0_neutral__pbtddhgrx95qt 1.0.0.0 d302bc2d.49868ff9ecff2
Windows Phone 8.1
CN
Crash 2 2
9NBLGGH3THQ9
2015-08-05
957fe591-0d8e-1c05-9688-4dfde547f312
MISSING_DUMP_EM_WATCHDOG_TIMEOUT_DEADA444_caixin.exe!{6A2A0B5A-E7E8-4748-A1AB-9B820BE11753}_Task_disconnected_while_still_running:_server_task_currentState_=_Active,_targetState_=_Active.
caixin.exe!{6A2A0B5A-E7E8-4748-A1AB-9B820BE11753}_Task_disconnected_while_still_running:_server_task_currentState_=_Active,_targetState_=_Active.
d302bc2d.49868ff9ecff2_1.0.0.0_neutral__pbtddhgrx95qt 1.0.0.0 d302bc2d.49868ff9ecff2
Windows Phone 8.1
CN
Crash .53 .04
9NBLGGH3THQ9
2015-08-03
47592457-662a-a475-a240-3592e51565b7
SICK_APPLICATION_DEADA444_Caixin.exe!{6A2A0B5A-E7E8-4748-A1AB-9B820BE11753}_Task_disconnected_while_still_running:_server_task_currentState_=_Active,_targetState_=_Active.
caixin.exe!{6A2A0B5A-E7E8-4748-A1AB-9B820BE11753}_Task_disconnected_while_still_running:_server_task_currentState_=_Active,_targetState_=_Active.
d302bc2d.49868ff9ecff2_1.0.0.0_neutral__pbtddhgrx95qt 1.0.0.0 d302bc2d.49868ff9ecff2
Windows Phone 8.1
CN
Crash 1 1
9NBLGGH3THQ9
2015-07-31
3f1b4775-4290-03e0-e009-8536c76ad412
EM_WATCHDOG_TIMEOUT_WATSON_IN_PROGRESS_DEADA444_Caixin.exe!{6A2A0B5A-E7E8-4748-A1AB-9B820BE11753}_Quiesce_Hang
caixin.exe!{6A2A0B5A-E7E8-4748-A1AB-9B820BE11753}_Quiesce_Hang
d302bc2d.49868ff9ecff2_1.0.0.0_neutral__pbtddhgrx95qt 1.0.0.0 d302bc2d.49868ff9ecff2
CN
Crash 1 1
9NBLGGH3THQ9
2015-08-12
bfc2c682-3af4-587b-7417-9a327af53fd5
STOWED_EXCEPTION_Newtonsoft.Json.JsonReaderException_80131500_Newtonsoft.Json.ni.DLL!Newtonsoft.Json.JsonTextReader.ParseValue
newtonsoft_json_ni!Newtonsoft.Json.JsonTextReader.ParseValue 1.0.0.0
Windows Phone 8.1
CN
Crash 1 1
Run Code Online (Sandbox Code Playgroud) 我知道EventInfo.AddEventHandler(...)可以用来将处理程序附加到事件的方法.但是,如果我甚至无法定义事件处理程序的正确签名,应该怎么做,因为我甚至没有引用处理程序所期望的事件args?
我将用正确的代码解释问题.
//当我在我的解决方案中提供所有可用的场景时,Zero Reflection Scenario.
internal class SendCommentsManager
{
public void Customize(IRFQWindowManager rfqWindowManager)
{
rfqWindowManager.SendComment += HandleRfqSendComment;
}
private void HandleRfqSendComment(object sender, SendCommentEventArgs args)
{
args.Cancel = true;
}
}
Run Code Online (Sandbox Code Playgroud)
现在,我希望通过使用反射来实现相同的目标.我已经能够找出大部分内容,但是当我将一个委托附加到事件(使用AddEventHandler)时,它会抛出"Error binding to target method."异常.
我理解这个异常背后的原因,将一个错误的委托附加到一个事件.但必须有一些方法来实现这一目标.
internal class SendCommentsManagerUsingReflection
{
public void Customize(IRFQWindowManager rfqWindowManager)
{
EventInfo eventInfo = rfqWindowManager.GetType().GetEvent("SendComment");
eventInfo.AddEventHandler(rfqWindowManager,
Delegate.CreateDelegate(eventInfo.EventHandlerType, this, "HandleRfqSendComment"));
//<<<<<<<<<<ABOVE LINE IS WHERE I AM GOING WRONG>>>>>>>>>>>>>>
}
private void HandleRfqSendComment(object sender, object args)
{
Type sendCommentArgsType = args.GetType();
PropertyInfo …Run Code Online (Sandbox Code Playgroud) 我有以下价值观
x = 7.81;
y = 178.32;
z = (x/y)*100;
Run Code Online (Sandbox Code Playgroud)
百分比必须是4%上述结果.如何使用JavaScript计算百分比?