小编kma*_*ks2的帖子

记录对象的内存使用情况

可能有5或6个SO帖子切向触及这个,但没有一个真正回答这个问题.

我有一个Dictionary对象,我使用一种缓存来存储值.问题是我不知道它有多大 - 随着时间的推移它可能会变得越来越大,但我无法分辨,所以我无法衡量它的有效性,或者对用户如何使用该软件做出结论.因为这是一个将在很长一段时间内投入生产并监控某些东西的部分,所以连接内存分析器或任何类似的调试都没有意义.

理想情况下,我只需在我的Timer中调用一个类似于:

private void someTimer_Tick(object sender, EventArgs e)
{
   ...
   float mbMem = cacheMap.GetMemorySize();
   RecordInLog(DateTime.Now.ToString() + ": mbMem is using " + mbMem.ToString() + "MB of memory");
   ...
}
Run Code Online (Sandbox Code Playgroud)

这可以在不附加某些调试工具的情况下完成,以便可以使用部署方案吗?

.net c# memory

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

使用本机加密提供程序时.NET中的内存泄漏

我有一个需要加密和解密字符串的应用程序.以下是我的解密方法:

  public static string Decrypt(string cipherText)
  {
     try
     {
        //Decrypt:
        byte[] keyArray;
        byte[] toDecryptArray = Convert.FromBase64String(cipherText);
        keyArray = UTF8Encoding.UTF8.GetBytes(key);
        AesCryptoServiceProvider Aes = new AesCryptoServiceProvider();
        Aes.Key = keyArray;
        Aes.Mode = CipherMode.CBC;
        Aes.Padding = PaddingMode.PKCS7;
        Aes.IV = IV;
        ICryptoTransform cTransform = Aes.CreateDecryptor();
        byte[] resultArray = cTransform.TransformFinalBlock(toDecryptArray, 0, toDecryptArray.Length);
        Aes.Clear();
        return UTF8Encoding.UTF8.GetString(resultArray, 0, resultArray.Length);
     }
     catch (Exception ex)
     {
        return "FAILED:*" + cipherText + "*" + ex.Message;
     }
  }
Run Code Online (Sandbox Code Playgroud)

然而,这似乎泄漏了.如您所见,所有变量都是本地范围的,因此在完成此块时应该释放它们.作为背景,我称这种方法有时几乎是不间断的.

为了确定我有泄漏我用很多请求淹没了我的服务器.通过仔细跟踪每个请求通过每个代码路径,我确定这段代码是罪魁祸首.当在我的记忆中评论时,使用率会急剧上升,当被注释掉(并且只是返回cipherText)时,内存使用会保持平稳.

.net c# memory encryption

4
推荐指数
2
解决办法
2205
查看次数

获取已连接的TcpClient的远程端口

出于构造速率限制器的目的,我需要能够区分通过同一网关路由的不同用户.因此,如果我有100个具有相同IP地址的客户端,我想将它们与远程网关/主机/路由器上的相关端口区分开来.

我可以轻松获得IP:

string clientIPAddress = ((IPEndPoint)tcpClient.Client.RemoteEndPoint).Address.ToString();
Run Code Online (Sandbox Code Playgroud)

是否有类似的方法来获取客户端的远程端口号?谢谢.

.net c# sockets tcpclient

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

禁用 WPF ComboBox 的下拉菜单

我有一个如下指定的组合框:

<ComboBox Height="31" Margin="7,7,0,0" Name="callerID" IsEditable="True"  Background="LightBlue" KeyDown="callerIDbar_KeyDown" Foreground="White" FontSize="17"  FontWeight="Bold" HorizontalContentAlignment="Center" VerticalAlignment="Top" Grid.Row="0" Grid.Column="0"  />
Run Code Online (Sandbox Code Playgroud)

storedCalls是电话号码的集合,将填充到ComboBox.Items

foreach (string call in storedCalls)
{
   if (call != "Enter a number to dial")
      callerID.Items.Add(call);
}
Run Code Online (Sandbox Code Playgroud)

这一切都运行良好。我填充主项是因为我喜欢由 的集合Items中的值驱动的自动完成功能。有没有办法 XAML 禁用下拉错误并禁用下拉菜单?即制作一个简单的自动完成文本框之类的控件?ComboBoxItems

我已经看到了完整的TextBox控件,其中包括一堆代码隐藏和复杂的标记,但这不是我想要做的。我只需要禁用下拉菜单的显示功能。

.net c# wpf xaml combobox

3
推荐指数
1
解决办法
7913
查看次数

如何从WPF ToggleButton中删除默认的chrome

我有一个ToggleButton定义如下:

<ToggleButton Name="tbPinned"  Grid.Row="0" Grid.Column="3" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="1,0,0,-5" Height="30" Width="30" IsChecked="True" Checked="tbPinned_Checked" Unchecked="tbPinned_Unchecked" >
            <Image Source="/some_image.png" Stretch="Fill" />
         </ToggleButton>
Run Code Online (Sandbox Code Playgroud)

但是,我只想让按钮成为图像,而不是按钮上的图像.如果我使用正常,Button我会Style="{DynamicResource NoChromeButton}"在开始ToggleButton标记中执行类似操作.但这不起作用.

我怎样才能模仿整个NoChromeButton事物ToggleButton呢?

编辑:编辑包括我如何使用常规Buttons:

<Button Style="{DynamicResource NoChromeButton}" Height="17" Margin="0,0,30,0" Name="btnMinimize" VerticalAlignment="Top" Grid.Column="1" Click="btnMinimize_Click" HorizontalAlignment="Right" Width="27" Padding="0" Visibility="Visible">
            <Image Source="/some_image.png" Stretch="None"  />
        </Button>
Run Code Online (Sandbox Code Playgroud)

.net c# wpf button

3
推荐指数
1
解决办法
4565
查看次数

隐藏.NET MessageBox'任务栏图标

是否可以以没有任务栏图标或具有自定义图像的方式调用静态MessageBoxShow()方法?我正在尝试寻找构建自定义MessageBox类的替代方法.

谢谢.

我尝试以DefaultDesktopOnly下列方式选择该选项:

if (MessageBox.Show("Are you sure you would like to do something?", "Title", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly) == DialogResult.Yes)
{
    //Do stuff
}
Run Code Online (Sandbox Code Playgroud)

但是,任务栏中仍然有一个图标,主窗体也开始崩溃.如果重要的话,我在Win7.有稳定性问题DefaultDesktopOnly吗?

.net c# messagebox winforms

3
推荐指数
1
解决办法
3525
查看次数

ORM架构

背景:我有一个大规模的项目(2个ASP.NET Web应用程序,每个类似10页).这两个Web应用程序共享许多后端需求,特别是操作一组约50个表的能力.它们都是同一个RDBMS,它总是MySQL.

问题:一段时间后,项目中添加了一个功能丰富的大型ORM库(Subsonic),结果证明它太多了.它太大了,零件太多了,开销太大了.由Subsonic生成的一些集合需要> 1分钟来创建,而原始内联查询(我知道很糟糕)可以完成同样的需要~2s.这不仅仅是Subsonic的问题,NHibernate和其他ORM工具太大了,太多的功能永远不会被使用.这些项目的范围也永远不会变得很大.数据库不可知也是不必要的,因为我们永远不会从MySQL切换,除了内部,没有人会使用这个工具.

显然内联查询很糟糕,不安全,错误.Linq也不是一个选择.因此,需要一些小的自定义ORM工具供我打包在库中.我的想法是包括:

  • 基础是一个Table类,它的构造函数只是一个db名称和一个表名
  • Table类会公开公开一些方法
  • public DataRow Record(string primaryKeyValue)//获取单个记录
  • public DataRowCollection Records(string whereClauseOrRangeOfKeyValues)//获取记录集合
  • public bool Save()//通过更新/插入已更改的任何行来保存数据库的当前状态; 不确定维护哪些记录是否脏的最佳方法
  • public bool Loaded(string primaryKeyValue)//告诉给定记录是否存在
  • public DataRowCollection Query(string mysqlQuery); //运行特定的自定义查询
  • 私下里几乎只有几件事:一个消毒剂,一个选择的方法,一个做upserts的方法,而不是其他的东西

也许StackOverflow的汇集知识可以突出这个基本设置的缺点或提供改进.提前致谢.

编辑:一个约束(不确定它在这一点上是多么坚定)是我没有使用预先构建的库.亚马逊关闭了更高的产品,任何第三方实用程序都可能被拒绝.因此,与实用程序选择相比,它更像是一种架构选择.

.net c# mysql asp.net orm

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

Windows 7中的ASP.NET Project和IE10兼容模式问题

我有一个asp.net网站,很多客户都可以使用它。我最近有一个客户切换到Win7和IE10。他告诉我,每当他尝试查看我的网站时,系统都会提示他输入兼容模式。我试图在实验室中的多个带有IE10的Win7机器上重现这一点。没运气。

所以我有几个问题:

  • 有没有人看到Win7上的IE10选择性提示兼容模式?
  • 仅将其浏览器配置为始终使用兼容模式有什么缺点?

谢谢。

c# windows asp.net internet-explorer-10

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

活动报告PDF生成

我继承了一个使用Active Reports的项目.我基本上需要创建一个简单的pdf来保存我的一个ASP.NET页面上的DataGrid中的数据.

我在DataDynamics网站上只发现了一个演练,它只适用于VS2003和VS2005的用户.

我需要的报告不需要是互动的.我不需要使用Document和Page事件.我只需要在DataTable(绑定到我的网格)中获取我所拥有的内容并创建一个pdf文件,该文件可供下载.

有没有一种直接的方法来使用ActiveReports创建这个简单的静态报告?谢谢.

c# asp.net activereports

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

PreparedStatement.setString()调用表现得很奇怪

这可能很简单,但我不明白出了什么问题.

作为背景,我使用PreparedStatements和模板查询来提高效率.我调用setString(index,argument)来填充模板的各个部分,在填充所有字段之后,我调用execute语句.

这是一个当前事物的片段(当然它是有效的):

   stmnt.setInt(1, node.getI_ID());
   stmnt.setString(2, node.getTime());
   stmnt.setInt(3, node.getMemoryAddress());
   stmnt.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

getI_ID返回一个5位数的int数,如10014,与getMemoryAddress相同.getTime返回类似"2011-03-14_13:23:00"的日期时间.

目标是当查询最终执行该日期时间的小时但增加1时,但我不能修改从getTime返回的值这一事实,即这应该通过添加一些快速和脏的方式来完成sql代码.

这是我最初想出的:

   stmnt.setInt(1, node.getI_ID());
   stmnt.setString(2, node.getTime() + " interval 1 hour");
   stmnt.setInt(3, node.getMemoryAddress());
   stmnt.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

但是,执行时,getTime的未修改值应该在我新添加的行中.当PreparedStatement将String转换为VARCHAR或DATETIME时,是否存在适用的字符串条件?或者字符串可能不包含多个令牌或其他内容?

此外,我无法在查询模板中添加"间隔1小时",因为并非所有节点都需要添加一小时.

任何帮助深表感谢.谢谢.

java sql

0
推荐指数
1
解决办法
1561
查看次数

为一系列Perl参数转义'$'

我想做相当于:

for (int i = 0; i < 10; i++)
{
   arg[i] = arg[i].Replace("$", @"\$");
}
Run Code Online (Sandbox Code Playgroud)

在Perl.Perl会是什么样子?

perl

0
推荐指数
1
解决办法
115
查看次数

依赖于非托管资源的常见.NET类

我最近在.NET本机加密服务提供程序中遇到了一些内存泄漏问题,因为它依赖于非托管代码.我在SO上遇到的唯一另一件事就是这篇文章,但它没有得到太多细节,更不用说提供一个好的罪魁祸首了.

是的,如果它实现了IDisposable,它可能会在某个地方使用一些非托管资源,但是我想把一个列表放在一起,通常使用的是特定类,而不是简单地在Intellisense中查找Dispose.

我遇到的那些给我带来麻烦的是:

  • AesCryptoServiceProvider
  • ICryptoTransform的

其他依赖非托管资源的人是谁知道的?是否有任何特别阴险的那些看起来像是完全管理但不是?提前致谢.

.net c# memory memory-leaks

-1
推荐指数
1
解决办法
265
查看次数