小编tes*_*ino的帖子

CA2202,如何解决这种情况

任何人都可以告诉我如何从以下代码中删除所有CA2202警告?

public static byte[] Encrypt(string data, byte[] key, byte[] iv)
{
    using(MemoryStream memoryStream = new MemoryStream())
    {
        using (DESCryptoServiceProvider cryptograph = new DESCryptoServiceProvider())
        {
            using (CryptoStream cryptoStream = new CryptoStream(memoryStream, cryptograph.CreateEncryptor(key, iv), CryptoStreamMode.Write))
            {
                using(StreamWriter streamWriter = new StreamWriter(cryptoStream))
                {
                    streamWriter.Write(data);
                }
            }
        }
        return memoryStream.ToArray();
    }
}
Run Code Online (Sandbox Code Playgroud)

警告7 CA2202:Microsoft.Usage:对象'cryptoStream'可以在方法'CryptoServices.Encrypt(string,byte [],byte [])'中多次处理.为避免生成System.ObjectDisposedException,不应在对象上多次调用Dispose:Lines:34

警告8 CA2202:Microsoft.Usage:对象'memoryStream'可以在方法'CryptoServices.Encrypt(string,byte [],byte [])'中多次处理.为避免生成System.ObjectDisposedException,不应在对象上多次调用Dispose:Lines:34,37

您需要Visual Studio代码分析才能看到这些警告(这些不是c#编译器警告).

.net c# code-analysis fxcop

101
推荐指数
5
解决办法
3万
查看次数

ApplicationSettingsBase中的FileNotFoundException

在调试应用程序时,在Visual Studio中启用了中断异常时,我总是会收到以下错误.这真是让我感到困扰,因为我们处理中断异常.有趣的是,当我继续(加载StringCollection)时它仍然有效.

消息是:

无法加载文件或程序集'System.XmlSerializers,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089'或其依赖项之一.该系统找不到指定的文件.

这是导致异常的代码(设计器生成)

[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
public global::System.Collections.Specialized.StringCollection Mru {
        get {
            return ((global::System.Collections.Specialized.StringCollection)(this["Mru"]));
        }
        set {
            this["Mru"] = value;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我试图创建一个显示错误的空测试应用程序,但没有发生异常.我们的项目非常庞大,因此很难找到原因.也许这个网站上有人知道如何解决这个问题.

c# application-settings applicationsettingsbase

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

如何从文本文件创建MD5哈希摘要?

使用C#,我想创建一个文本文件的MD5哈希.我怎么能做到这一点?请包含代码.非常感谢!

更新:感谢大家的帮助.我终于确定了以下代码 -

// Create an MD5 hash digest of a file
public string MD5HashFile(string fn)
{            
    byte[] hash = MD5.Create().ComputeHash(File.ReadAllBytes(fn));
    return BitConverter.ToString(hash).Replace("-", "");            
}
Run Code Online (Sandbox Code Playgroud)

c# hash md5

23
推荐指数
2
解决办法
2万
查看次数

模式匹配 - 在第二个图像中查找参考对象[OpenCV?]

我有一个参考黑白图像,其中包含一个参考对象(例如硬币).该对象由用户标记,即感兴趣的区域.

现在我想分析其他图像并找到该对象或类似对象的位置和旋转.物体任意放置在相机下方,但从不缩放,视角始终为90度.

我评估了一个完全符合我要求的商业图书馆:Euresys EasyFind

您可以在下面找到手头任务的示例图像.当前的实现使用OpenCV的特征检测,并且无法正常工作.

模板:

在此输入图像描述

找到同一枚硬币的匹配:

在此输入图像描述

对于略有不同的硬币,比赛失败:

在此输入图像描述

特征检测似乎是错误的方法.我需要以某种方式简单地对象.但如果我这样做(Blur,Canny,CornerHarris)功能检测根本不起作用.

我们非常感谢任何有关可靠方法的建议.一个替代的图书馆建议也会很棒.

c++ opencv pattern-matching

17
推荐指数
2
解决办法
2万
查看次数

Inno Setup RegKey在64位系统上运行

我使用Inno Setup创建了一个设置,并希望使用Pascal Script查询注册表

 if RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\\Installer\UpgradeCodes\342603A924F08FA4B95B5C283FC13D13') then
Run Code Online (Sandbox Code Playgroud)

我的设置是32位(我想要安装的软件),但在64位系统上,查询被重定向到 HKCR\Wow6432Node\\Installer\UpgradeCodes

当然,即使它存在,也找不到钥匙.即使我的设置仍为32位,如何检测密钥?

registry inno-setup

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

FolderBrowserDialog - 发生Win32Exception - 参数不正确

我尝试使用WPF中的FolderBrowserDialog,如下所示:

public static bool BrowseFolder(out string folderName)
{
   using (System.Windows.Forms.FolderBrowserDialog dlg = new System.Windows.Forms.FolderBrowserDialog())
   {
        var result = dlg.ShowDialog();
        folderName = dlg.SelectedPath;
        return result == System.Windows.Forms.DialogResult.OK;
   }
}
Run Code Online (Sandbox Code Playgroud)

在Visual Studio 2010中使用"break on exception"时,在ShowDialog()调用中关闭Dialog后会出现异常.我很好奇为什么会这样.

异常:Win32Exception
消息:参数不正确
Stacktrace:at MS.Win32.UnsafeNativeMethods.SetFocus(HandleRef hWnd)

更新
我也尝试显式设置父级,但仍然抛出了异常.

var w = new System.Windows.Interop.WindowInteropHelper(parent);
System.Windows.Forms.IWin32Window i = new WindowWrapper(w.Handle);
result = dlg.ShowDialog(i);
Run Code Online (Sandbox Code Playgroud)

c# wpf

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

DirectX11:将数据从ComputeShader传递给VertexShader?

是否可以将滤镜应用于要使用Compute Shader渲染的几何数据,然后将结果用作顶点着色器中的输入缓冲区?这样可以省去回读数据的麻烦(和时间).

任何帮助深表感谢.

directx directx-11 slimdx compute-shader vertex-shader

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

将密钥转换为 C# 中的密钥

我想在我的 ObjectModel 中使用新的枚举以避免在此 Dll 中引用 Windows.Forms。GUI 使用需要Keys枚举的类库。

是否可以通过任何方式将Key值转换为Keys值?

编辑:我刚刚发现我的问题已经在这里提出并回答:How can I conversion 'System.Windows.Input.Key' to 'System.Windows.Forms.Keys'?

.net c# winforms

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

使用两个花车进行双重划分?

我想使用两个浮点数进行双重划分(看起来Direct Compute不支持双重划分).

那可能吗?

这是我到目前为止所尝试的(c#代码,以后应该是HLSL):

int count = 7;
double value = 0.0073812398871474;
float f1 = (float)value;
float f2 = (float)((value - f1));
float r1 = f1 / count;
float r2 = f2 / count;
double result = (double)r1 + (double)r2;
Run Code Online (Sandbox Code Playgroud)

0,00105446285765182(结果)

0,00105446284102106(正确的结果)

它与f1中的舍入有关.如果值是:

 double value = 0.0073812344471474;
Run Code Online (Sandbox Code Playgroud)

然后结果是正确的.

c# floating-point directx-11 compute-shader

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