可以通过2个不同的进程共享相同的DLL数据吗?

我有两个不同的C#应用​​程序同时运行。 我希望他们两个都能够访问DLL的相同“实例”(也在C#中)。 DLL保存了一些我想要返回到两个应用程序要求的数据。 我的DLL是线程安全的,所以我希望这是可能的,但我不知道如何。 任何帮助或建议将不胜感激。

等价隐式算子:为什么它们合法?

更新! 请参阅我对以下C#规范的一部分的剖析; 我想我必须遗漏一些东西,因为对我而言 ,我在这个问题中描述的行为实际上违反了规范。 更新2! 好的,经过进一步的反思,并根据一些评论,我想我现在明白了发生了什么。 规范中的“源类型”一词指的是从中转换的类型 – 即下面的示例中的Type2 – 这只是意味着编译器能够将候选缩小到两个定义的运算符(因为Type2是两种来源类型)。 但是,它无法进一步缩小选择范围。 所以规范中的关键词(适用于这个问题)是“源类型” ,我之前误解(我认为)是指“声明类型”。 原始问题 说我定义了这些类型: class Type0 { public string Value { get; private set; } public Type0(string value) { Value = value; } } class Type1 : Type0 { public Type1(string value) : base(value) { } public static implicit operator Type1(Type2 other) { […]

使用Microsoft.Office.Interop.Word程序集

我必须用c#编写一个word文档编程。 有没有办法访问Microsoft.Office.Interop.Word程序集而不安装Microsoft Word? 我尝试安装Office主互操作程序集但它要求我先安装Microsoft Office程序包。

TransactionScope,在sql profiler上开始事务?

我需要在事务上下文中做这样的事情 using(var context = new Ctx()) { using (TransactionScope tran = new TransactionScope()) { decimal debit = 10M; int id = 1; var data = context.Cashier .Where(w => w.ID == id) .Select(s => new{ s.Money }) .Single(); Cashier cashier = new Cashier(){ ID = id }; context.Cashier.Attach(cashier); cashier.Money = data.Money – debit; context.Entry(cashier).Property(p => p.Money […]

无法将SQL数据读取器数据加载到DataTable中

string query = “select * from cfo_daily_trans_hist”; try { using (SqlConnection connection = new SqlConnection( cnnString)) { SqlCommand command = new SqlCommand(query); command.Connection = connection; connection.Open(); var result = command.ExecuteReader(); DataTable datatable = new DataTable(); datatable.Load(result); connection.Close(); } } 因此var result是通过ExecuteReader();创建的ExecuteReader(); 和HasRows是true ,它显示正确的字段数量。 但是,我从它创建的DataTable是空的。 我究竟做错了什么? 我99%肯定它正在获取数据,但我不知道如何通过SqlDataReader对象找到它以确保。 谢谢。

使用物理路径中的HttpPostedFileBase.SaveAs保存上载的文件

我想通过方法HttpPostedFileBase.SaveAs()将上传的文件保存到物理路径。 当我选择物理路径时,会出现exception,表明路径必须是虚拟路径。 var fileName = Path.GetFileName(fileurl.FileName); var path = “C:/Projets” + fileName; fileurl.SaveAs(Server.MapPath(path)); 如何更改我的代码以便能够在我想要的地方保存文件?

并行操作批处理

在TPL(任务 – 并行 – 库)中是否有内置支持用于批处理操作? 我最近玩了一个例程,使用查找表即音译在字符数组上进行字符替换: for (int i = 0; i < chars.Length; i++) { char replaceChar; if (lookup.TryGetValue(chars[i], out replaceChar)) { chars[i] = replaceChar; } } 我可以看到,这可能是平凡的并行化,所以跳入第一个刺,我知道会因为任务太细粒度而表现更差: Parallel.For(0, chars.Length, i => { char replaceChar; if (lookup.TryGetValue(chars[i], out replaceChar)) { chars[i] = replaceChar; } }); 然后我重新编写算法以使用批处理,以便可以将工作分块到不太细粒度的批处理中的不同线程上。 这样就可以按预期使用线程,并且接近线性加速。 我确信必须内置支持TPL中的批处理。 什么是语法,我该如何使用它? const int CharBatch = 100; […]

使用HttpClient和ContinueWith的Paralell.ForEach

我有一个方法尝试从并行的几个URL下载数据,并返回IEnumerable反序列化类型 该方法如下所示: public IEnumerable DownloadContentFromUrls(IEnumerable urls) { var list = new List(); Parallel.ForEach(urls, url => { lock (list) { _httpClient.GetAsync(url).ContinueWith(request => { var response = request.Result; //todo ensure success? response.Content.ReadAsStringAsync().ContinueWith(text => { var results = JObject.Parse(text.Result) .ToObject<IEnumerable>(); list.AddRange(results); }); }); } }); return list; } 在我的unit testing中(我存根_httpClient返回一组已知的文本)我基本上得到了 序列不包含任何元素 这是因为该方法在任务完成之前返回。 如果我在.ContinueWith()调用结束时添加.Wait(),它会通过,但我确定我在这里滥用了API …

任意分隔符/转义字符处理的最佳算法是什么?

我有点惊讶的是网上没有关于此的信息,我一直发现这个问题比我想象的要有点棘手。 这是规则: 您将从分隔/转义数据开始拆分为数组。 分隔符是一个任意字符 转义字符是一个任意字符 分隔符和转义字符都可能出现在数据中 正则表达式很好,但性能最好的解决方案是最好的 编辑:可以忽略空元素(包括前导或结尾分隔符) 代码签名(基本上是C#) public static string[] smartSplit( string delimitedData, char delimiter, char escape) {} 问题中最棘手的部分是转义的连续转义字符大小写,当然,因为(调用/转义字符和分隔符):////////,= ////, 我错过了某个地方,这是在网上还是在另一个SO问题上处理的? 如果没有,那就把你的大脑投入工作……我认为这个问题对于公益事业来说是件好事。 我自己正在研究它,但还没有一个好的解决方案。

将XML文档作为参数传递给C#中的Web服务

我必须将XML文档作为参数发送,以使用Post方法从Service请求WebRequest。 任何人都可以帮助解决如何将XML文档作为参数发送,或者如何使字符串中的整个文档像文档一样传递。