混淆是一种方式,但它无法防止破坏应用程序的盗版保护安全性.我如何确保应用程序不被篡改,以及如何确保注册机制不能被反向工程?
此外,可以将C#应用程序转换为本机代码,而Xenocode代价太高.
C#提供了很多的功能,并且是我的代码的理想语言,所以下再次写入整个代码库++是出了问题.
可以从.NET中的签名程序集中轻松删除安全证书.
如何重置远程和本地GIT存储库以删除所有提交,并以当前Head作为初始提交重新开始.
我们是否可以将多个公钥与一个私钥相关联以进行RSA公钥加密?
我想在做一些工作时显示进度条,但这会挂起UI并且进度条不会更新.
我有一个一个WinForm ProgressForm ProgressBar
将无限期地继续以滚动字幕的方式.
using(ProgressForm p = new ProgressForm(this))
{
//Do Some Work
}
Run Code Online (Sandbox Code Playgroud)
现在有很多方法可以解决这个问题,比如使用BeginInvoke
,等待任务完成和调用EndInvoke
.或使用BackgroundWorker
或Threads
.
我在使用EndInvoke时遇到了一些问题,尽管这不是问题.问题是哪种方法是用于处理此类情况的最佳和最简单的方法,您必须向用户显示程序正在运行而不是无响应,以及如何使用最简单的代码来处理这种情况,这样可以提高效率并赢得" t泄漏,可以更新GUI.
就像BackgroundWorker
需要有多个函数,声明成员变量等一样.然后你需要保持对ProgressBar表单的引用并处理它.
编辑:BackgroundWorker
不是答案,因为它可能是我没有得到进度通知,这意味着没有调用,ProgressChanged
因为DoWork
是对外部函数的单个调用,但我需要继续调用Application.DoEvents();
进度条保持旋转.
赏金是针对此问题的最佳代码解决方案.我只需要调用Application.DoEvents()
以便Marque进度条可以工作,而worker函数在Main线程中工作,并且它不会返回任何进度通知.我从不需要.NET魔术代码来自动报告进度,我只需要一个比以下更好的解决方案:
Action<String, String> exec = DoSomethingLongAndNotReturnAnyNotification;
IAsyncResult result = exec.BeginInvoke(path, parameters, null, null);
while (!result.IsCompleted)
{
Application.DoEvents();
}
exec.EndInvoke(result);
Run Code Online (Sandbox Code Playgroud)
保持进度条活着(意味着不冻结但刷新品牌)
很多时候,有一个明确的方法,从集合中删除所有项目,这些项目也被处置.
喜欢,
toolStripMenuItem.DropDownItems.Clear();
Run Code Online (Sandbox Code Playgroud)
是足够的,或者我应该这样打电话:
foreach (ToolStripItem item in toolStripMenuItem.DropDownItems)
{
toolStripMenuItem.DropDownItems.Remove(item);
item.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
编辑:好吧ToolStripItem是一个不是问题的例子,对于那些说清楚已经足够的人我发现了另一个例子,TabControl也有项目集合和清除方法.但TabControls可以有复杂的控件(至少我有),需要显式Dispose(即使它们在某些时候由GC自动处理,导致它们占用大量内存).我想最好的答案是divo评论处理项目,然后打电话给清楚.
如何在多行模式下使用正则表达式匹配和替换文本?
我知道RegexOptions.Multiline选项,但是用C#中的新行字符指定匹配all的最佳方法是什么?
输入:
<tag name="abc">this
is
a
text</tag>
Run Code Online (Sandbox Code Playgroud)
输出:
[tag name="abc"]this
is
a
test
[/tag]
Run Code Online (Sandbox Code Playgroud)
啊,我发现了实际的问题.'&'和';' 在Regex中,匹配文本在一行中,而同样需要在Regex中进行转义,以便在有新行的情况下工作.
在正常的WinForm应用程序中,您可以这样做:
DataTable dataTable = new DataTable();
dataTable = dataGridRecords.DataSource;
Run Code Online (Sandbox Code Playgroud)
但是如何使用WPF数据网格呢?
dataTable = dataGridRecords.ItemsSource;
Run Code Online (Sandbox Code Playgroud)
也不行.
如何识别Excel文件使用Excel 95或Excel 97规范的位置?即,他们使用哪种版本的BIFF.
使用语音API或SAPI在C#中这两种方法有什么区别?
using SpeechLib;
SpVoice speech = new SpVoice();
speech.Speak(text, SpeechVoiceSpeakFlags.SVSFlagsAsync);
Run Code Online (Sandbox Code Playgroud)
返回Apacela的声音,和
SpeechSynthesizer ss = new SpeechSynthesizer();
ss.SpeakAsync ("Hello, world");
Run Code Online (Sandbox Code Playgroud)
不适用于Apacela的声音.
第一个声音返回所有声音,但第二个声音只返回少量声音.这是与SAPI 5.1和SAPI 5.3相关的吗?
在Vista和XP上的行为是相同的,在SpVoice能够检测到Apacela语音但是使用SpeechSynthesizer时,在XP和Vista上都没有检测到声音.
我猜XP使用SAPI 5.1,而Vista使用SAPI 5.3然后为什么在所有操作系统上都有相同的行为,但与API的行为不同?
另外哪个API更强大,两种方式/ API有什么区别?
c# ×6
.net ×2
.net-3.5 ×1
begininvoke ×1
clear ×1
collections ×1
cryptography ×1
datagrid ×1
dispose ×1
excel ×1
file-format ×1
git ×1
math ×1
modulo ×1
obfuscation ×1
regex ×1
rsa ×1
sapi ×1
wpf ×1