小编Chr*_*fer的帖子

Windows窗体ComboBox导致间歇性的System.AccessViolationException

一些背景故事:

我搜索了stackoverflow和Google来找出这个特殊异常的起源.

我们有一个Windows窗体(C#,. NET 2.0)应用程序偶尔会抛出一个System.AccessViolationException(下面的堆栈跟踪).Windows XP(SP3)和Windows Vista(SP2)都发生了异常.从用户输入,我们已经确定当更改ComboBox的选定索引时发生异常.

ComboBox是标准的Windows窗体组件,它包含在继承的自定义控件中System.Windows.Forms.UserControl.

我的主要问题是:

这个异常来自哪里?

  • 它是来自.NET框架中的一些内部错误吗?
  • 它可能是SelectedIndexChanged导致它的事件调度的代码吗?

有关stackoverflow的相关主题:

堆栈跟踪:

Message: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Type: System.AccessViolationException

   at System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
   at System.Windows.Forms.Control.DefWndProc(Message& m)
   at System.Windows.Forms.Control.WmCommand(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ComboBox.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 …
Run Code Online (Sandbox Code Playgroud)

c# combobox exception-handling .net-2.0 winforms

11
推荐指数
1
解决办法
2390
查看次数

高阶函数,Flow类型注释

我正在尝试编写一些非常简单的功能示例来评估Flow类型系统.我错过了一些明显的东西,或者这个样本是否有用:

function logger (message: string): void {
    console.log(message);
}

function consumer (logFunc: logger) {
    logFunc('foo');
}

consumer(logger);
Run Code Online (Sandbox Code Playgroud)

当我尝试使用Try Flow时,我会在原型中找到"Callable signature".我在本地运行时得到相同的消息(流量0.21.0):

  8:     logFunc('foo');
         ^^^^^^^^^^^^^^ function call. Callable signature not found in
  8:     logFunc('foo');
         ^^^^^^^ prototype
Run Code Online (Sandbox Code Playgroud)

我可以通过明确声明类型别名来解决问题,但这似乎是不必要的重复(特别是对于更复杂的模块):

type loggerType = (message: string) => void;

function logger (message: string): void {
    console.log(message);
}

function consumer (logFunc: loggerType) {
    logFunc('foo');
}

consumer(logger);
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现的唯一相关文档是:http://flowtype.org/docs/functions.html#function-based-type-annotations

试想一下,consumerlogger有单独的模块(甚至在不同的NPM包),而且更复杂,logger是进口的(ES6,或CommonJS的).

  • 将类型写两次(loggerloggerType)似乎是不合理的.
  • 它也似乎没有合理的重复的类型签名loggerconsumer …

javascript flowtype

4
推荐指数
1
解决办法
1338
查看次数