我需要某种方式来存储键/值对,其中值可以是不同类型.
所以我喜欢这样做:
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
对于我们的软件,我们使用硬件加密狗来保护软件.没有保护是完美的,但这种商业解决方案是负担得起的,并保持诚实的人诚实(如另一个线程中所述).优点是128位密钥在硬件加密狗上存储"不可读".
我们想要删除此硬件加密狗并开始使用软件保护.基本上我们可以使用商业产品,但另一方面也不会破坏.我对加密知之甚少,这就是我发布这个的原因.如何在Windows计算机上存储无法使用Reflector或其他内容读取的密钥?但是,我应该能够访问用于测试许可证代码的密钥.
我只想要一个简单的解决方案,只需使用Reflector就无法攻击.
或者我问一个非常愚蠢的问题?
谢谢大家的快速和有用的回复.我不想在互联网上使用许可,因为应用程序并不总是在连接的计算机上运行.然后我会得到更多问题然后解决它们.我们现在很可能会寻求商业解决方案.似乎保护不是那么微不足道.
非常感谢!!
我的应用程序使用连接到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)
然后我会将对象投射到我需要的任何东西上.这是要走的路吗?
我开始使用.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等方法......"这个伟大的新方法.
我在哪里错过了这一点?
我们最近搬到了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.5以Version=v4.0手工在配置文件中,一切工作正常,我们可以运行应用程序,但它似乎不可思议不得不这样做呢?在我们为4.0开发时,有人可以向我解释是什么导致解决方案要求4.5?
我想用鼠标拖动一个正方形来选择曲线上的点.当然我可以自己构建,但我想知道它是否可以更轻松地完成?
在我的列表视图中,我在某个文件夹中显示小图像的缩略图.我按如下方式设置了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)
用户可以右键单击列表视图中的图像以将其删除.我从列表视图中删除它,然后我想从文件夹中删除此图像.现在我收到文件正在使用的错误.当然这是合乎逻辑的,因为图像列表正在使用该文件.
我试图先从图像列表中删除图像,但我继续保持文件锁定.
有人能告诉我我做错了什么吗?
谢谢!
在VS2012中,我创建了一个WIX Bootstrapper项目(BURN).我将项目命名为"Bootstrapper".现在引导程序工作正常,但我想在不同的东西中更改生成的文件(bootstrapper.exe)的名称.我无法找到此输出文件名称的设置位置.
我觉得真的很蠢.我为我们的构建设置了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)
我在Winforms,C#.NET4.5工作
我在程序集A中有一个名为classA的类,它提供了method1
在我的主程序集中,我可以调用此方法,但在某些情况下,我100%确定这不会发生,因为来自注册表项的一些内部标志:
if( valueFromRegistryIsAlwaysFalse)
{
var A = new classA();
A.method1();
}
Run Code Online (Sandbox Code Playgroud)
当我在注册表中设置此值时,我不想为程序集A提供主可执行文件,但是即使我不使用该方法,它也需要程序集A来启动.我当然得到了这个,但有没有办法绕过这个?
在我的表中,我有关于每日温度测量的详细数据。该表看起来像:
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 点)?
非常感谢!!
我在.NET4.5 Winforms C#中工作.
我的应用程序基于模型视图控制器模式.在主窗体(视图)上,我有一个按钮退出.如果用户按下此按钮,则在控制器上调用一个清除内容然后调用Application.Exit()的方法.这很好用.
当用户在右上方窗口中按下默认窗口exit-cross时,我也想运行此方法.为此,我处理FormClosing事件.在这个事件中,我再次调用调用Application.Exit()的控制器方法;
现在的问题是Application.Exit()也会触发FormClosing事件.这会创建一个双重调用.当然,我可以制作一面旗帜并对此进行测试,但我觉得我做错了.
什么是关闭我的winforms应用程序和清理所需的东西的正确方法.我不想在视图的formclosing事件中清理,看起来很难看.
.net ×6
c# ×6
winforms ×4
async-await ×1
asynchronous ×1
burn ×1
datetime ×1
dictionary ×1
filelock ×1
formclosing ×1
hashtable ×1
listview ×1
oop ×1
protection ×1
t-sql ×1
wix ×1
zedgraph ×1