如何在C#中为数据库调用实现进度条和背景工作? 我有一些处理大量数据的方法。 他们是相对较长的运行操作,所以我想实现一个进度条,让用户知道事情正在发生。 我想过使用进度条或状态条标签,但由于有一个单独的UI线程,执行数据库处理方法的线程,UI控件不会更新,使进度条或状态条标签对我来说是无用的。 我已经看到了一些例子,但他们处理for循环,例如: for(int i = 0; i < count; i++) { System.Threading.Thread.Sleep(70); // … do analysis … bgWorker.ReportProgress((100 * i) / count); } private void bgWorker_ProgressChanged(object sender, ProgressChangedEventArgs e) { progressBar.Value = Math.Min(e.ProgressPercentage, 100); } 我正在寻找更好的例子。
目前我正在使用下面的方法打开用户的Outlook电子邮件帐户,并填写与发送相关内容的电子邮件: public void SendSupportEmail(string emailAddress, string subject, string body) { Process.Start("mailto:" + emailAddress + "?subject=" + subject + "&body=" + body); } 然而,我想要用附加的文件填充电子邮件。 就像是: public void SendSupportEmail(string emailAddress, string subject, string body) { Process.Start("mailto:" + emailAddress + "?subject=" + subject + "&body=" + body + "&Attach=" + @"C:\Documents and Settings\Administrator\Desktop\stuff.txt"); } 但是,这似乎并没有工作。 有谁知道一种方法,将允许这个工作!? 帮助非常感谢。 问候。
我试图写一个基于Alexandrescu概念的简单的ScopeGuard,但用c ++ 11的习惯用法。 namespace RAII { template< typename Lambda > class ScopeGuard { mutable bool committed; Lambda rollbackLambda; public: ScopeGuard( const Lambda& _l) : committed(false) , rollbackLambda(_l) {} template< typename AdquireLambda > ScopeGuard( const AdquireLambda& _al , const Lambda& _l) : committed(false) , rollbackLambda(_l) { _al(); } ~ScopeGuard() { if (!committed) rollbackLambda(); } inline void […]
我有这个类的结构。 class Interface{ … } class Foo : public Interface{ … } template <class T> class Container{ … } 我有一些其他类Bar的构造函数。 Bar(const Container<Interface> & bar){ … } 当我这样调用构造函数时,我得到“没有匹配函数”的错误。 Container<Foo> container (); Bar * temp = new Bar(container); 哪里不对? 模板不是多态的吗?
const是什么意思? 只读似乎封装了我的意思,但是,我不确定我是对的。 如果只读和const是不同的,有人可以告诉我为什么? 是什么促使这个问题是这个答案 ,他说, const “只”意味着在C中只读。我认为这都是 const意思,无论是C还是C ++。 他什么意思? 为了回答在C和C ++中const的具体差异,我创build了一个新的问题: 在C和C ++中,“const”是如何不同的? 根据R ..的build议。
我需要计算相当大的文件(千兆字节)的校验和。 这可以使用以下方法来完成: private byte[] calcHash(string file) { System.Security.Cryptography.HashAlgorithm ha = System.Security.Cryptography.MD5.Create(); FileStream fs = new FileStream(file, FileMode.Open, FileAccess.Read); byte[] hash = ha.ComputeHash(fs); fs.Close(); return hash; } 但是,这些文件通常是以缓冲的方式预先写入的(比如说一次写入32mb的文件)。 我深信,我看到了一个哈希函数的重写,它允许我在写入的同时计算MD5(或其他)哈希值,即:计算一个缓冲区的哈希值,然后将得到的哈希值送入下一次迭代。 像这样的东西:(pseudocode-ish) byte [] hash = new byte [] { 0,0,0,0,0,0,0,0 }; while(!eof) { buffer = readFromSourceFile(); writefile(buffer); hash = calchash(buffer, hash); } 哈希现在与通过在整个文件上运行calcHash函数完成的操作相似。 现在,我在.Net 3.5框架中找不到像这样的重写,我在做梦吗? 它从来没有存在过,还是我只是在search? 同时进行写入和校验和计算的原因是由于大文件造成的。
是否有任何好的多选下拉列表与checkbox(webcontrol)存在的asp.net? 非常感谢
我有一个C#WinForms应用程序,其中有一个WebBrowser控件。 我想在我的C#表单和embedded式Web浏览器控件中的JavaScript之间进行双向通信。 我知道我可以使用InvokeScript调用JavaScript函数,但是如何从文档中的 JavaScript调用C#代码? 我猜想由于安全原因,这不会很容易,但是不pipe怎样,它有可能吗? 这些JavaScript函数应该是用户函数,就像macros一样,它会告诉WebBrowser到底要用我自己编写的整个C#库的帮助来做什么。 而且由于这是一个网页抓取工具,JavaScript是这些macros的完美语言,因为它非常适合访问HTML文档中的元素。
我是.net中的线程模型的新手。 你会用什么来: 启动一个处理文件的进程(process.StartInfo.FileName = fileName;) 等待用户closures该进程或在一段时间后放弃该线程 如果用户closures了进程,请删除该文件 启动进程和等待应该在与主线程不同的线程上完成,因为这个操作不应该影响应用程序。 例: 我的应用程序产生一个HTML报告。 用户可以右键点击某处,然后说“查看报告” – 现在我在一个临时文件中检索报告内容,并启动处理html文件的过程,即默认浏览器。 问题是我无法清理,即删除临时文件。
我想在DataGridView显示一个客户的会计logging,我想要一个列显示其余额的运行总额。 我这样做的旧方法是获取数据,循环遍历数据,并逐行添加到DataGridView ,并计算当时的总运行总数。 瘸。 我宁愿使用LINQ to SQL,或LINQ(如果LINQ to SQL不可能的话)来计算运行总数,所以我可以将DataGridView.DataSource设置为我的数据。 这是我拍摄的一个超简单的例子。 说我有以下class级。 class Item { public DateTime Date { get; set; } public decimal Amount { get; set; } public decimal RunningTotal { get; set; } } 我想要一个可以生成如下结果的L2S或LINQ语句: Date Amount RunningTotal 12-01-2009 5 5 12-02-2009 -5 0 12-02-2009 10 10 12-03-2009 5 15 12-04-2009 -15 0 […]