将byte 数组转换为DataTable

我在类型为varbinary的字段中将DataTable类型的对象保存到SQL 2005数据库中。 我想要找回它,但我无法输入它。 这就是我拯救它的方式。 MemoryStream memStream = new MemoryStream(); StreamWriter sw = new StreamWriter(memStream); sw.Write(dt); con.Open(); using (SqlCommand cmd = new SqlCommand(“INSERT INTO Tables(TableName, TableData, QuestionID) VALUES (@TableName, @TableData, @QuestionID)”, con)) { cmd.Parameters.Add(“@TableName”, SqlDbType.VarChar).Value = “a new table”; cmd.Parameters.Add(“@TableData”, SqlDbType.VarBinary,Int32.MaxValue).Value = memStream.GetBuffer(); cmd.Parameters.Add(“@QuestionID”, SqlDbType.VarChar).Value = “2”; cmd.ExecuteNonQuery(); } ‘dt’是DataTable对象实例。

使用EmptyWorkingSet有什么副作用?

我正在使用下面的代码释放一些正在运行的程序的内存,因为我自己的程序需要大量内存资源才能更快地运行。 [DllImport(“psapi.dll”)] public static extern bool EmptyWorkingSet(IntPtr hProcess); public FreeMem(string programName){ EmptyWorkingSet(Process.GetCurrentProcess().Handle); foreach(Process process in Process.GetProcesses(programName)) { try { EmptyWorkingSet(process.Handle); } catch (Exception) { … } } } 它看起来工作正常,我能够将某些程序(如资源管理器)的内存使用量从100,000 Kb降低到2,000 Kb。 这很不错,但这样做有副作用吗? 一些商业软件也使用这个,如Yamicsoft Vista / Xp管理器和Firefox优化器,仅举几例,所以我在想,如果这没有不良副作用或存在?

考虑到使用Task.Run异步运行任何方法的能力,.Net Framework中的* Async方法的目的是什么?

简短的问题: 为什么.Net Framework添加了很多* Async版本的方法而不是开发人员只是使用Task.Run来异步运行同步方法? 详细问题: 我理解异步性的概念。 我知道Tasks 我知道async / await关键字。 我知道.Net Framework中的* Async方法有什么用。 我不明白的是库中* Async方法的目的。 假设您有两行代码: F1(); F2(); 关于数据/控制流程,只有两种情况: F1完成后需要执行F2 。 F2不需要等待F1完成。 我没有看到任何其他情况。 我没有看到任何一般需要知道执行某些function的具体线程(除了UI)。 线程中代码的基本执行模式是同步的。 并行性需要多个线程。 异步性基于并行性和代码重新排序。 但基地仍然是同步的。 当F1的工作量很小时,差异无关紧要。 但是当A花费大量时间完成时,我们可能需要查看情况,如果F2不需要等待F1完成,我们可以与F2并行运行F1 。 很久以前我们使用线程/线程池来做到这一点。 现在我们有Tasks 。 如果我们想并行运行F1和F2 ,我们可以写: var task1 = Task.Run(F1); F2(); 任务很酷,我们可以在最终需要完成任务的地方使用await 。 到目前为止,我认为没有必要制作F1Async()方法。 现在,我们来看一些特殊情况。 我看到的唯一真正特殊情况是UI。 UI线程是特殊的并且停止它会使UI冻结很糟糕。 正如我所看到的,Microsoft建议我们将UI事件处理程序标记为async 。 将方法标记为async意味着我们可以使用await关键字基本上在另一个线程上调度繁重的处理并释放UI线程,直到处理完成。 我不能再得到的是为什么我们需要任何* Async方法来等待它们。 我们总是可以写await Task.Run(F1); 。 […]

尝试从Windows certstore读取PrivateKey时出现exception

我使用OpenSSL创建了一个私钥和公钥对,然后我生成了一个.p12文件,将其导入我的Windows证书库。 密钥对和.p12文件是在Windows XP中创建的,我试图在Windows 7中使用它。我试图从IIS中的Web服务(.svc)中访问密钥。 如果我尝试从独立应用程序中读取私钥,我可以毫无问题地执行此操作,但是当我尝试从我的Web应用程序中读取它时,我总是会遇到以下exception: ‘cert.PrivateKey’ threw an exception of type ‘System.Security.Cryptography.CryptographicException’ 这是整个堆栈跟踪: en System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer) en System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle) en System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair() en System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 dwKeySize, CspParameters parameters, Boolean useDefaultKeySize) en System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey() en ValidKeyDll.ValidKey.getLlaveDeAlmacen(String almacen, Boolean esLlavePrivada) en C:\Users\desarrollo\Documents\ValidKeyDll\ValidKeyDll\ValidKey.cs:línea 58 en ValidKeyDll.ValidKey.firmaCadena(String almacen, String cadenaFirmar) […]

使用SharpZipLib的C# – SharpZipLib与Winzip和XP的兼容性?

我正在使用CSharpZipLib库自动压缩一些文件。 问题是生成的zip文件不适用于Winzip(版本8.1)或XP的压缩文件夹。 它适用于7zip。 Winzip给出一个错误, 该文件不是标准的Zip 2.0格式 。 是否有一个可以更改的参数可以使库以Winzip / XP兼容格式进行压缩?

在浏览器中获取已打开选项卡的URL

我正在开发一个项目,我需要在浏览器中获取所有已打开标签的url(例如Google Chrome,IE,Firefox等) 有没有办法用c#或vb.net做到这一点? ps它是一个Windows窗体应用程序

在c#.net中获取,设置和赋值关键字

这里的value关键字是什么以及如何将值分配给_num ? 我很困惑,请给出以下代码的说明。 private int _num; public int num { get { return _num; } set { _num=value; } } public void button1_click(object sender,EventArgs e) { num = numericupdown.Value; }

Oracle.DataAccess错误

我有一个在Windows环境中运行的asp.net / C#Web应用程序。 该项目构建良好,并在我的本地机器的VB.net开发服务器上运行完美。 但是,当我发布到真正的应用程序服务器时,我收到以下错误消息: [OracleException(0x80004005):提供程序与Oracle客户端版本不兼容] [TypeInitializationException:’Oracle.DataAccess.Client.OracleConnection’的类型初始值设定项引发exception。 目前有一个版本的应用程序运行正常,我正在不同目录的实时服务器上进行测试。 我甚至尝试从工作应用程序中抓取Oracle.DataAccess .dll但仍然得到相同的错误消息。

AsParallel究竟是如何工作的?

以下测试程序似乎没有下蹲。 这是因为我正在测试一个小清单吗? static void Main(string[] args) { List list = 0.UpTo(4); Test(list.AsParallel()); Test(list); } private static void Test(IEnumerable input) { var timer = new Stopwatch(); timer.Start(); var size = input.Count(); if (input.Where(IsOdd).Count() != size / 2) throw new Exception(“Failed to count the odds”); timer.Stop(); Console.WriteLine(“Tested ” + size + ” numbers in ” + timer.Elapsed.TotalSeconds […]

使用从外部解决方案托管在Windows服务中的WCF服务

我使用以下演练设置了在Windows服务中托管的WCF库: http://msdn.microsoft.com/en-us/library/ff649818.aspx 消费者winforms位于同一解决方案中,该解决方案位于我的工作PC的C:驱动器本地。 演练工作即winforms按钮给出了正确的答案。 如果我在C-Drive上创建一个新的解决方案,其中包含一个Windows窗体项目,我无法成功添加对此运行服务的service reference ,我收到以下消息: 详细信息说明如下: 无法识别URI前缀。 元数据包含无法解析的引用:’net.tcp:// localhost:8526 / Service1’。 无法连接到net.tcp:// localhost:8526 / Service1。 连接尝试持续时间跨度为00:00:02.0020000。 TCP错误代码10061:无法建立连接,因为目标计算机主动拒绝它127.0.0.1:8526。 无法建立连接,因为目标计算机主动拒绝它127.0.0.1:8526如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。 为什么我可以将此服务引用添加到与服务相同的解决方案中的项目,而不是来自不同解决方案中的项目? 编辑 我的同事在MSDN文章中发现了一个错误 – 我在这里详细说明了他的发现