小编spe*_*der的帖子

NullReferenceException,没有堆栈跟踪......从哪里开始?

我有一个WPF音频应用程序.

偶尔(甚至在调试器中)我看到一个NullReferenceException没有堆栈跟踪信息.

如何开始调试这样的问题?

一些背景:

我是P/Invoking函数,WinMM.dll其中涉及在调用时注册回调waveOutOpen

    [DllImport("winmm.dll")]
    public static extern MmResult waveOutOpen(out IntPtr phwo, IntPtr uDeviceID, WaveFmt pwfx, WaveCallbk dwCallback, IntPtr dwInstance, int fdwOpen);
Run Code Online (Sandbox Code Playgroud)

事实证明这很难稳定,尤其是在我打电话的时候waveOutClose,并立即waveOutOpen再次调用(通常是改变输出格式).

我怀疑这个问题可能与我上面描述的调用有关(尽管知识很少,我可能完全偏离目标).

重现问题目前证明是难以捉摸的,尽管我可以为一直看到这个问题的用户提供构建.我可能会尝试加快导致问题的操作,以便在调试器中重现问题更加确定.

关于调试器,我没有修改任何设置(包括Enable unmanaged code debugging)或任何Debug -> Exceptions...设置.说实话,我对这里提供的内容毫无头绪,所以任何提示都是受欢迎的.

异常怎么可能没有堆栈跟踪?你以前见过这个吗?救命!

c# debugging wpf pinvoke winmm

10
推荐指数
1
解决办法
1560
查看次数

如何在C#中编写一个好的反复出现的模板模式(CRTP)

前段时间我想创建自己的数据映射器,它比平均ORM简单得多.这样做我发现需要访问我的基类中继承类的类型信息.我的第一个想法是反射,但它太慢了(如果你使用反射,请查看Fasterflect,因为它"几乎"消除了反射的性能问题).

所以我转向了一个解决方案,我后来发现它有自己的名字:奇怪的重复模板模式.这主要解决了我的问题,但学习如何正确实现这种模式有点挑战.我必须解决的两个主要问题是:

1)如何让我的消费代码与我的通用对象一起使用而无需知道创建对象的通用参数?

2)如何在C#中继承静态字段?

具有挑战性的部分实际上是在弄清问题.一旦我意识到我需要做什么,解决这些问题就很容易了.如果你发现自己需要CRTP,你可能会发现自己需要回答这些问题......它们似乎是相辅相成的.

c# crtp

10
推荐指数
1
解决办法
2447
查看次数

在数据库中存储可重新排序项的有效方法

所以我有一个用户收藏夹表.它们有几百万行.

目前,它们只有三列:id(pk),userIdsomeFkRef.有一个索引userId允许我快速选择用户的收藏夹.

目前这些是按顺序排序的id,实际上只是插入顺序.我们希望为用户提供重新订购收藏的机会,最有可能通过某种拖放式互动.

我的第一个(我怀疑天真)方法,这将是简单地增加一个order列,并在一个综合指数userId,order.但是,在反射时,当用户将其项目移动到列表上一定距离时,项目的起始位置和结束位置之间的所有中间行都需要order重新计算其列,因此也需要重新计算索引.

这(很可能)很糟糕.

在我花了很多年的时间试图量化到底有多糟糕之前,我想知道是否有一个更好的基于表格的表示,用我上面描述的各种操作来操作更便宜.

sql sql-server data-structures

10
推荐指数
2
解决办法
769
查看次数

SQL插入相关表

在我看来,这是一个随着SQL /数据库开发一直出现的问题,但后来我对这一切都不熟悉,所以请原谅我的无知.

我有2张桌子:

CREATE TABLE [dbo].[Tracks](
    [TrackStringId] [bigint] NOT NULL,
    [Id] [bigint] IDENTITY(1,1) NOT NULL,
    [Time] [datetime] NOT NULL,
 CONSTRAINT [PK_Tracks] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
) WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF,
        IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON,
        ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Tracks] CHECK CONSTRAINT [FK_Tracks_AudioStreams]
GO

ALTER TABLE [dbo].[Tracks]  WITH CHECK ADD  CONSTRAINT
[FK_Tracks_TrackStrings]     FOREIGN KEY([TrackStringId])
REFERENCES [dbo].[TrackStrings] ([Id])
GO

ALTER TABLE [dbo].[Tracks] CHECK CONSTRAINT [FK_Tracks_TrackStrings]
GO
Run Code Online (Sandbox Code Playgroud)

CREATE …
Run Code Online (Sandbox Code Playgroud)

sql sql-server insert

9
推荐指数
2
解决办法
9820
查看次数

与Windows服务通信的最快方法

我们正在运行需要与另一个进程快速通信的服务.目前,我们在缓冲模式下使用WCF NetNamedPipeBinding来调用服务中的方法,这似乎提供了可用WCF绑定的最小开销.使用托管代码有更快的方法吗?

编辑:以下建议的聚合请求是已考虑的选项.实际上,我们想知道是否存在一个替代API,用于使用命名管道优于WCF的进程间通信.

.net c# service wcf

9
推荐指数
1
解决办法
1230
查看次数

Asp.net mvc 301从www.domain.com重定向到domain.com

我们在domain.com上有一个网站,也可以通过www.domain.com的CNAME条目访问,该网站指向domain.com.我们希望所有访问www.domain.com的访问者都可以使用301重定向重定向到domain.com.在asp.net mvc中实现这个的最佳方法是什么?在global.asax?

subdomain asp.net-mvc redirect

9
推荐指数
1
解决办法
7589
查看次数

随机字符发生器,范围为(A..Z,0..9)和标点符号

我需要创建一个返回单个字符的随机字符生成器.字符应该在字母表的字母范围内,数字0到9,以及一些字符,如.?/ - .任何一个例子将不胜感激.

java random android

9
推荐指数
3
解决办法
11万
查看次数

高效的模板人口

假设我有一个文本模板,其中包含许多需要填充的字段:

var template = "hello {$name}. you are {$age} years old. you live in {$location}"
Run Code Online (Sandbox Code Playgroud)

以及IDictionary<string,string>要替换的值:

key     | value
===================
name    | spender
age     | 38
location| UK
Run Code Online (Sandbox Code Playgroud)

填充模板的天真方式可能是这样的:

var output = template;
foreach(var kvp in templValues)
{
    output = output.Replace(string.format("{{${0}}}", kvp.Key), kvp.Value);
}
Run Code Online (Sandbox Code Playgroud)

然而,这看起来非常低效.有没有更好的办法?

c# string templates

9
推荐指数
1
解决办法
191
查看次数

代码第一列,类型为char(36)

所以我有一个UserProfile模型类作为SimpleMembership的一部分.在其中我需要存储另一个类型的DB中存在的遗留标识符char(36).我喜欢把它改成像一个独特的标识更合理的东西,但这超出了今天的活动范围.

我当前的注释创建了一个列 nvarchar(36)

[StringLength(36)]
public string UserIdentifier{ get; set; }
Run Code Online (Sandbox Code Playgroud)

我想要一列char(36)代替.这可能吗?

entity-framework data-annotations entity-framework-5

9
推荐指数
2
解决办法
5619
查看次数

Sql Server谓词懒惰?

我有一个问题:

SELECT 
    someFields 
FROM 
    someTable 
WHERE 
    cheapLookup=1 
    AND (CAST(someField as FLOAT)/otherField)<0.9
Run Code Online (Sandbox Code Playgroud)

那么,CAST在这种情况下cheapLookup是否会执行和划分0?如果没有,在这种情况下如何避免计算?

sql-server lazy-evaluation sql-server-2008

8
推荐指数
2
解决办法
4829
查看次数