小编Rod*_*ton的帖子

没有jQueryUI的jqGrid?

我找不到一个明确的答案.是否可以在我的网站上使用JQGrid 而不使用jQueryUI?

jquery-ui jqgrid

6
推荐指数
1
解决办法
1542
查看次数

删除所有没有外键约束的记录

我有一个SQL 2005表,里面有数百万行,整天都被用户点击.该表由20个左右的具有外键约束的表引用.我需要定期做的是删除此表中"Active"字段设置为false的所有记录,并且在引用父记录的任何子表中没有其他记录.如果没有尝试一次删除每个错误并让它导致违反约束的SQL错误,那么最有效的方法是什么?此外,它不是禁用约束的选项,并且我不能在任何大量时间内导致父表上的锁定.

sql sql-server constraints foreign-keys rowdeleting

5
推荐指数
1
解决办法
7100
查看次数

如何使用null参数调用委托?

如果我在调用期间尝试将null参数传递给委托,则会出现null异常.这是代码的样子:

        public void RequestPhoto()
        {
            WCF.Service.BeginGetUserPhoto(Contact.UserID,
                new AsyncCallback(RequestPhotoCB), null);
        }

        public void RequestPhotoCB(IAsyncResult result)
        {
            var photo = WCF.Service.EndGetUserPhoto(result);
            UpdatePhoto(photo);
        }

        public delegate void UpdatePhotoDelegate(Binary photo);
        public void UpdatePhoto(Binary photo)
        {
            if (InvokeRequired)
            {
                var d = new UpdatePhotoDelegate(UpdatePhoto);
                Invoke(d, new object[] { photo });
            }
            else
            {
                var ms = new MemoryStream(photo.ToArray());
                var bmp = new Bitmap(ms);
                pbPhoto.BackgroundImage = bmp;
            }
        }

问题在于:

Invoke(d, new object[] { photo });

如果变量"photo"为null.在调用期间传递null参数的正确方法是什么?谢谢!

c# delegates invoke nullreferenceexception

5
推荐指数
1
解决办法
1615
查看次数

如果使用declare参数,sql就像查询一样慢但如果没有则快

SQL 2008:这很慢(需要1 1/2分钟):

declare @p1 varchar(50)
set @p1 = '976j%'
select * from invsearch_query where comparepnfwd like @p1

这需要不到一秒钟:

select * from invsearch_query where comparepnfwd like '976j%'

为什么???

sql performance sql-server-2008 sql-like

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

SendToAsync内存泄漏?

我有一个简单的.net 3.5sp1 Windows应用程序(在C#中)充当UDP服务器.它侦听端口,从端点接收数据,然后将其接收的内容重新传输到另一个端点(即中继,用于直播数据流).我所经历的是在连接启动约20分钟后,它开始恶化.另外我注意到它每秒吞噬大约50-100K的内存,这在GC之后永远不会被释放.我必须关闭应用程序并重新启动它.不好.我已将问题缩小到以下代码,该代码将重新传输到另一端:

var sendBuffer = new byte[readCount];
Array.Copy(readData, sendBuffer, readCount);
SocketAsyncEventArgs args = new SocketAsyncEventArgs();
args.RemoteEndPoint = p.EP;
args.SetBuffer(sendBuffer, 0, sendBuffer.Length);
SwitchWindow.LineSocket.SendToAsync(args);
Run Code Online (Sandbox Code Playgroud)

有没有人有使用SendToAsync的内存泄漏的经验?

更新:

初始化套接字时,我实例化一个状态对象(仅执行一次).state对象有一个名为"buffer"的属性,它是一个字节数组.我从套接字接收数据异步如下:

private void beginReceiveData(ref MessageState state)
{
    var ipeSender = new IPEndPoint(IPAddress.Any, 0);
    var epSender = (EndPoint)ipeSender;

    state.workSocket = LineSocket;
    state.EP = epSender;
    state.workSocket.BeginReceiveFrom(state.buffer, 0, MessageState.BufferSize,
        SocketFlags.None, ref epSender,
        new AsyncCallback(ReceiveDataCB),
        state);
}
Run Code Online (Sandbox Code Playgroud)

然后,在我的回调(ReceiveDataCB)上,我正在检索异步对象,然后将字节缓冲区传递给另一个函数进行处理,然后调用上面发布的代码以便重新传输到另一端(state.buffer变为readData) .

更新#2:

根据我的直觉,我将发送代码更改为以下内容,摆脱了SocketAsyncEventArgs和SendToAsync:

var sendBuffer = new byte[readCount];
Array.Copy(readData, sendBuffer, readCount);
SwitchWindow.LineSocket.BeginSendTo(
    sendBuffer, 0, sendBuffer.Length, SocketFlags.None,
    p.EP, new AsyncCallback(echoCB), null);
Run Code Online (Sandbox Code Playgroud)

当然,我添加了一个"echoCB"回调,除了调用EndSendTo之外什么都不做.内存泄漏现在消失了!我怀疑它与创建如此多的SocketAsyncEventArgs对象有关,并且异步函数挂在这些对象上,每个数据包一个(每秒33个数据包,可以快速加起来).我再次查看了SocketAsyncEventArgs的MSDN文档,我注意到在提供的服务器"示例"代码中,他们使用了一个SocketAsyncEventArgs对象池.我认为它的设计并不像我使用它那样.我认为重点是不必为每次调用实例化这些缓冲区等,因此重用它们并使服务器具有更好的性能.

c# sockets asynchronous network-programming sendto

2
推荐指数
1
解决办法
2614
查看次数