Tag: C#的

热卸载/重新加载应用程序使用的DLL

我有一个应用程序加载一个DLL来执行一个特定的部分处理 Example : "Application.dll" loading "Process.dll" Process.dll是使用reflection在运行时dynamic加载的 ,而不是在应用程序中引用的。 处理完成后,需要在服务器上重新编译DLL,稍后再装回。 为了做到这一点,我需要释放它,否则我得到以下消息:“无法将文件”Process.dll“复制到”Process.dll“。进程无法访问文件”Process.dll“,因为它是被另一个进程使用“。 所以问题是:如何以编程方式释放/释放/卸载Process.dll从我的应用程序再次加载之前。 当然,整个过程就是在不停止应用程序的情况下做到这一点。 编辑1: build议的解决scheme如下所示: AppDomain newDomain4Process = AppDomain.CreateDomain("newDomain4Process"); Assembly processLibrary = newDomain4Process.Load("Process.dll"); AppDomain.Unload(newDomain4Process); 我仍然存在的问题是,虽然我正在给适当的完整path,我得到一个FileNotFound Exception 。 这个post的答案也没有预期的效果。 编辑2: 这个post救了我的命,这里是代码: class ProxyDomain : MarshalByRefObject { public Assembly GetAssembly(string AssemblyPath) { try { return Assembly.LoadFrom(AssemblyPath); } catch (Exception ex) { throw ex; } } } ProxyDomain pd […]

如何使用WinForms设置控件的Z顺序

我正在写一个自定义的TextBox ,获得焦点后,改变其边框风格。 由于添加边框会导致控件与相邻的控件重叠,因此我暂时将文本框放到对话框的前面(使用textBox.BringToFront() )。 但是,一旦编辑完成并且焦点丢失,我想将控制按照Z顺序发回原来的位置。 这是可能的(最好以一种简单的方式!)

限制C#中并行线程的数量

我正在编写一个C#程序,通过FTP生成并上传50万个文件。 我想要并行处理4个文件,因为机器有4个内核,生成文件需要更长的时间。 是否有可能将下面的Powershell示例转换为C#? 还是有没有更好的框架,如C#中的Actor框架(如F#MailboxProcessor)? Powershell示例 $maxConcurrentJobs = 3; # Read the input and queue it up $jobInput = get-content .\input.txt $queue = [System.Collections.Queue]::Synchronized( (New-Object System.Collections.Queue) ) foreach($item in $jobInput) { $queue.Enqueue($item) } # Function that pops input off the queue and starts a job with it function RunJobFromQueue { if( $queue.Count -gt 0) { $j […]

我如何检查一个string是否存在于另一个string中

希望有人能帮助我。 我只是学习C#,我有一个简单的问题。 我有一个variables,我想检查是否存在另一个string。 就像是 if ( test contains "abc" ) { } 有没有一种简单的方法来做到这一点在C#

确定文件是否存在使用c#和parsingUNCpath

我正在尝试编写一个函数来确定文件是否存在。 这两种方法certificate返回不一致的结果(fileExists()似乎提供了准确的结果,相比isFileFound(),返回误报 – 我会期望一个exception,当试图创build实例)。 protected bool isFileFound(string path, string fileName) { System.IO.FileInfo fi = null; bool found = false; try { fi = new System.IO.FileInfo(path + fileName); found = true; } catch (Exception e) { baselogger.Fatal(e.Message + " " + e.StackTrace + " \n" + path + fileName); } return found; } protected bool fileExists(string […]

在不知道行长的情况下从文件中读取行

我想逐行阅读文件,而不知道行长。 这是我到目前为止: int ch = getc(file); int length = 0; char buffer[4095]; while (ch != '\n' && ch != EOF) { ch = getc(file); buffer[length] = ch; length++; } printf("Line length: %d characters.", length); char newbuffer[length + 1]; for (int i = 0; i < length; i++) newbuffer[i] = buffer[i]; newbuffer[length] = '\0'; // newbuffer […]

为什么任何人都不会接受C#中的公共字段?

似乎每个C#静态分析器都想在发现公共领域时抱怨。 但为什么? 当然,有些情况下公共(或内部) 域是足够的,并且使用get_和set_方法拥有一个属性是没有意义的。 如果我确实知道我不会重新定义该领域或添加它(副作用是不好的,对吧?) – 不应该是一个简单的领域足够吗?

为什么不能将IEnumerable <struct>转换为IEnumerable <object>?

为什么最后一行不允许? IEnumerable<double> doubleenumerable = new List<double> { 1, 2 }; IEnumerable<string> stringenumerable = new List<string> { "a", "b" }; IEnumerable<object> objects1 = stringenumerable; // OK IEnumerable<object> objects2 = doubleenumerable; // Not allowed 这是因为double是不是从对象派生的值types,因此协变不起作用? 这是否意味着没有办法做到这一点: public interface IMyInterface<out T> { string Method(); } public class MyClass<U> : IMyInterface<U> { public string Method() { return "test"; } […]

比较来自不同容器的迭代器

比较不同容器的迭代器是否合法? std::vector<int> foo; std::vector<int> bar; expression式foo.begin() == bar.begin()产生错误或未定义的行为? (我正在写一个自定义的迭代器,并且在实现operator==时候偶然发现了这个问题。)

从LINQ到SQL获取SQL查询?

我有一个查询,我通过byte[]作为参数。 我试图从SQL查询中取出它并在pipe理工作室中运行该查询来进行debugging。 我如何从中提取SQL语句? committeeMember = db.Committee_Member.FirstOrDefault(x => x.Customer_Number == activity.Contact.Number && x.Position_Start_Date.Value.Year == activity.EndDate && x.Committee_Id == activity.Committee.Id && x.Cancelled != 1);