小编Enr*_*ico的帖子

如何在C#中创建包含不同类型的Dictionary

我需要某种方式来存储键/值对,其中值可以是不同类型.

所以我喜欢这样做:

 int i = 12;
 string s = "test";
 double x = 24.1;

 Storage.Add("age", i);
 Storage.Add("name", s);
 Storage.Add("bmi", x);
Run Code Online (Sandbox Code Playgroud)

然后用以下方法检索值:

 int a = Storage.Get("age");
 string b = Storage.Get("name");
 double c = Storage.Get("bmi");
Run Code Online (Sandbox Code Playgroud)

这样的存储应该如何?谢谢,Erik

c# dictionary hashtable

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

通过加密保护软件

对于我们的软件,我们使用硬件加密狗来保护软件.没有保护是完美的,但这种商业解决方案是负担得起的,并保持诚实的人诚实(如另一个线程中所述).优点是128位密钥在硬件加密狗上存储"不可读".

我们想要删除此硬件加密狗并开始使用软件保护.基本上我们可以使用商业产品,但另一方面也不会破坏.我对加密知之甚少,这就是我发布这个的原因.如何在Windows计算机上存储无法使用Reflector或其他内容读取的密钥?但是,我应该能够访问用于测试许可证代码的密钥.

我只想要一个简单的解决方案,只需使用Reflector就无法攻击.

或者我问一个非常愚蠢的问题?


谢谢大家的快速和有用的回复.我不想在互联网上使用许可,因为应用程序并不总是在连接的计算机上运行.然后我会得到更多问题然后解决它们.我们现在很可能会寻求商业解决方案.似乎保护不是那么微不足道.

非常感谢!!

.net protection

12
推荐指数
3
解决办法
3931
查看次数

定义采用不同参数的接口方法

我的应用程序使用连接到PC的测量仪器.我希望能够使用来自不同供应商的类似仪器.

所以我定义了一个接口:

interface IMeasurementInterface
    {
        void Initialize();
        void Close();
    }
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.在测量之前,我需要设置仪器,这意味着不同仪器的参数非常不同.所以我想定义一个方法,它接受可以有不同结构的参数:

interface IMeasurementInterface
{
    void Initialize();
    void Close();
    void Setup(object Parameters);
}
Run Code Online (Sandbox Code Playgroud)

然后我会将对象投射到我需要的任何东西上.这是要走的路吗?

.net c# oop

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

使用async和await与System.Threading.Thread.Sleep

我开始使用.NET4.5进行异步和等待.所有示例似乎都使用以下内容来模拟长期操作:

await Task.Delay(3000);
Run Code Online (Sandbox Code Playgroud)

现在我的长期计算非常类似于:

System.Threading.Thread.Sleep(3000)
Run Code Online (Sandbox Code Playgroud)

例如:

for(i=0;i<1000000000;i++)
    i=i*2;
Run Code Online (Sandbox Code Playgroud)

如何使用async和await来完成这项工作?现在我似乎只能"使用webrequests,WCF等方法......"这个伟大的新方法.

我在哪里错过了这一点?

.net asynchronous async-await

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

目标.NET 4.0但需要.NET 4.5

我们最近搬到了VS 2012,但我们需要继续使用.NET 4.0.我们的大部分客户仍在使用XP,Windows XP不支持.NET 4.5.

现在,解决方案中的所有项目都针对.NET 4.0或更低版本.当我们运行应用程序时,它告诉我们安装.NET 4.5 Framework,而只使用.NET 4.0?

在生成的配置文件中,我看到:

<startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
Run Code Online (Sandbox Code Playgroud)

如果我改变Version=v4.5Version=v4.0手工在配置文件中,一切工作正常,我们可以运行应用程序,但它似乎不可思议不得不这样做呢?在我们为4.0开发时,有人可以向我解释是什么导致解决方案要求4.5?

.net winforms visual-studio-2012

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

通过拖动鼠标选择ZedGraph图中的点

我想用鼠标拖动一个正方形来选择曲线上的点.当然我可以自己构建,但我想知道它是否可以更轻松地完成?

c# zedgraph

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

无法删除列表视图中显示的图像文件

在我的列表视图中,我在某个文件夹中显示小图像的缩略图.我按如下方式设置了listview:

var imageList = new ImageList();
foreach (var fileInfo in dir.GetFiles())
{
    try
    {
        var image = Image.FromFile(fileInfo.FullName);
        imageList.Images.Add(image);
    }
    catch
    {
        Console.WriteLine("error");
    }
}

listView.View = View.LargeIcon;
imageList.ImageSize = new Size(64, 64);
listView.LargeImageList = imageList;

for (int j = 0; j < imageList.Images.Count; j++)
{
    var item = new ListViewItem {ImageIndex = j, Text = "blabla"};
    listView.Items.Add(item);
}
Run Code Online (Sandbox Code Playgroud)

用户可以右键单击列表视图中的图像以将其删除.我从列表视图中删除它,然后我想从文件夹中删除此图像.现在我收到文件正在使用的错误.当然这是合乎逻辑的,因为图像列表正在使用该文件.

我试图先从图像列表中删除图像,但我继续保持文件锁定.

有人能告诉我我做错了什么吗?

谢谢!

.net c# listview filelock winforms

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

为burn bootstrapper指定输出可执行文件名

在VS2012中,我创建了一个WIX Bootstrapper项目(BURN).我将项目命名为"Bootstrapper".现在引导程序工作正常,但我想在不同的东西中更改生成的文件(bootstrapper.exe)的名称.我无法找到此输出文件名称的设置位置.

wix burn

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

CruiseControl.net构建不会触发

我觉得真的很蠢.我为我们的构建设置了cruisecontrol.net.如果我从命令行运行它,它工作正常:ccnet.exe -p = TestLib

但是,如果我将CCNET作为服务器运行或从启动/程序运行它,它什么都不做.我希望以下脚本每10分钟建一次.....

我究竟做错了什么???

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
<!-- This is your CruiseControl.NET Server Configuration file. Add your projects below! -->

<project name="TestLib">
    <triggers>
        <intervalTrigger seconds="600" buildCondition="ForceBuild"/>
    </triggers>

    <sourcecontrol type="svn" autoGetSource="true">
        <trunkUrl>xxxx://xxxxxxxxxxx/svn/testlib/trunk</trunkUrl> 
        <workingDirectory>c:\Projects\TestLib</workingDirectory> 
        <executable>C:\Program Files\Subversion\bin\svn.exe</executable> 
        <username>xxxxxxx</username> 
        <password>xxxxxxx</password> 
    <timeout units="minutes">5</timeout> 
    </sourcecontrol>

    <tasks>
       <msbuild>
            <executable>C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
            <workingDirectory>c:\Projects\TestLib</workingDirectory>
            <projectFile>TestLib.sln</projectFile>
            <buildArgs>/noconsolelogger /p:Configuration=Release;Platform=x86 /v:diag</buildArgs>
            <targets>Clean,Build</targets>
            <timeout>600</timeout>
            <logger>ThoughtWorks.CruiseControl.MsBuild.XmlLogger,C:\Program Files\CruiseControl.NET\server\ThoughtWorks.CruiseControl.MsBuild.dll</logger>
        </msbuild>

        <exec>
            <executable>copyfiles_testlib.bat</executable>
            <baseDirectory>C:\Projects</baseDirectory>
            <buildArgs></buildArgs>
            <buildTimeoutSeconds>60</buildTimeoutSeconds>
        </exec>
    </tasks>

    <publishers>
        <statistics />
        <xmllogger />
    </publishers>
</project>
Run Code Online (Sandbox Code Playgroud)

cruisecontrol.net

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

如何在不使用时防止装配

我在Winforms,C#.NET4.5工作

我在程序集A中有一个名为classA的类,它提供了method1

在我的主程序集中,我可以调用此方法,但在某些情况下,我100%确定这不会发生,因为来自注册表项的一些内部标志:

if( valueFromRegistryIsAlwaysFalse)
{
   var A = new classA();
   A.method1();
}
Run Code Online (Sandbox Code Playgroud)

当我在注册表中设置此值时,我不想为程序集A提供主可执行文件,但是即使我不使用该方法,它也需要程序集A来启动.我当然得到了这个,但有没有办法绕过这个?

.net c# .net-assembly winforms

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

T-SQL 从特定时间之间的多天中选择数据

在我的表中,我有关于每日温度测量的详细数据。该表看起来像:

DateTime timestamp, Float temperature
Run Code Online (Sandbox Code Playgroud)

我想在某个时间间隔之间的不同日期显示温度,然后只显示上午 7 点到晚上 8 点之间的温度。

我知道如何获取日期之间的数据:

SELECT [timestamp],[temperature]
  FROM [meteo_data]
  WHERE [timestamp] BETWEEN '2012-11-10' and '2012-11-17' 
Run Code Online (Sandbox Code Playgroud)

如何实施时间限制(上午 7 点至晚上 8 点)?

非常感谢!!

t-sql datetime sql-server-2008

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

Application.Exit调用FormClose事件

我在.NET4.5 Winforms C#中工作.

我的应用程序基于模型视图控制器模式.在主窗体(视图)上,我有一个按钮退出.如果用户按下此按钮,则在控制器上调用一个清除内容然后调用Application.Exit()的方法.这很好用.

当用户在右上方窗口中按下默认窗口exit-cross时,我也想运行此方法.为此,我处理FormClosing事件.在这个事件中,我再次调用调用Application.Exit()的控制器方法;

现在的问题是Application.Exit()也会触发FormClosing事件.这会创建一个双重调用.当然,我可以制作一面旗帜并对此进行测试,但我觉得我做错了.

什么是关闭我的winforms应用程序和清理所需的东西的正确方法.我不想在视图的formclosing事件中清理,看起来很难看.

c# winforms formclosing

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