【c# – Web API下载锁定文件】教程文章相关的互联网学习教程文章

c# – 如何在向UI添加内容时停止UI被锁定【代码】

我有250个视觉对象,我需要添加到WrapPanel.当我这样做时,UI锁定几秒钟,这不是我想要的.有办法阻止这个吗?private void ButtonClick() {Foreach(Visual item in ListOfVisuals){WrapPAnel.Children.Add(item);} }据我所知,我不能创建一个新的Task.Run()=> ButtonClick执行此操作,因为任务无法访问UI.解决方法:这里的实际问题是为您添加的每个项目引发更改通知. 您需要将WrapPAnel.Children数据绑定到实现AddRange的INotifyCollecti...

c# – 围绕多个语句的锁定语句是否确保所有更改对其他线程可见(假设它们进入相同的互斥锁)?【代码】

如果在一个锁定代码块中有多个共享变量赋值,它是否一定意味着所有这些更改都会立即被其他线程看到,一旦它们在同一个对象上输入一个锁定语句就可能在其他处理器上运行 – 或者没有这样的保证? 很多例子都显示了一个公共变量的“set”或“get”,并详细介绍了内存障碍,但如果内部有更复杂的语句,会发生什么?有可能甚至函数调用做其他事情? 像这样的东西:lock(sharedObject) {x = 10;y = 20;z = a + 10; }如果此代码在另一个可能在...

c# – 仅锁定Id【代码】

我有一个方法需要运行exclusivley运行一个代码块,但我想只在真正需要时才添加这个限制.根据Id值(Int32),我将加载/修改不同的对象,因此锁定所有线程的访问权限没有意义.这是第一次尝试这样做 – private static readonly ConcurrentDictionary<int, Object> LockObjects = new ConcurrentDictionary<int, Object>(); void Method(int Id) {lock(LockObjects.GetOrAdd(Id,new Object()){//Do the long running task here - db fetche...

c# – 如何使锁定对象静态影响其行为?【代码】

假设我有一个类似于以下成员的类:readonly object _locker;我用它来同步代码块,如下所示:lock (_locker) {// Do somethingMonitor.Pulse(_locker); }还有这个:lock (_locker) {while (someCondition)Monitor.Wait(_locker);// Do something else }假设我有这个特定类的多个实例,它们都使用不同的线程同时运行. 如果我将锁定器对象设置为静态,那么锁的行为和Monitor.Wait和Monitor.Pulse调用会发生什么?static readonly object ...

c# – 有没有办法从锁定的文件中读取数据?【代码】

这就是我的想法:var file = @"myfile";File.Open(file,FileMode.Open, FileAccess.ReadWrite, FileShare.None);using (StreamReader rdr = new StreamReader(File.Open(file, FileMode.Open, FileAccess.Read, FileShare.Read))){rdr.ReadToEnd();}var t = File.ReadAllBytes(file);Neigther File.Open(文件,FileMode.Open,FileAccess.Read,FileShare.Read)和File.ReadAllBytes都可以读取文件数据. 从我的旧c和winapi时代开始,我确...

c# – 我对Dictionary的使用是否需要锁定?【代码】

许多线程都可以访问摘要.每个线程都有一个唯一的密钥用于访问字典;Dictionary<string, List<Result>> summary;我是否需要锁定以进行以下操作? > summary [key] = new List< Result>()> summary [key] .Add(new Result()); 似乎我不需要锁定,因为每个线程将使用不同的密钥访问字典,但是由于将新记录同时添加到字典与其他步骤,因此(1)不会出现问题吗?解决方法:是的,你需要使用锁定. 字典对于添加操作不是线程安全的.如果您使用的是...

c# – Web API下载锁定文件【代码】

我遇到一个WebAPI方法的小问题,当用户调用方法的路由时,该方法会下载文件. 方法本身很简单:public HttpResponseMessage Download(string fileId, string extension) {var location = ConfigurationManager.AppSettings["FilesDownloadLocation"];var path = HttpContext.Current.Server.MapPath(location) + fileId + "." + extension;var result = new HttpResponseMessage(HttpStatusCode.OK);var stream = new FileStream(path...

c# – 不带锁定的double [] []元素的并发修改【代码】

我有一个锯齿状的double [] []数组,可以由多个线程同时修改.我想让它成为线程安全的,但如果可能的话,没有锁.线程可能很好地针对阵列中的相同元素,这就是出现整个问题的原因.我找到了使用Interlocked.CompareExchange方法以原子方式递增double值的代码:Why is there no overload of Interlocked.Add that accepts Doubles as parameters? 我的问题是:如果Interlocked.CompareExchange中存在锯齿状数组引用,它会保持原子状态吗?非...

c# – 使用MinimalLock锁定模型的log4net在以编程方式设置文件名时不起作用【代码】

当动态设置日志文件名时,RollingFileAppender与log4net.Appender.FileAppender MinimalLock锁定模型一起使用似乎没有记录任何文件.但是,在没有此锁定模型的情况下使用appender时,日志记录有效. 在下面的配置文件中,Appender1可以工作,但Appender2不能:<?xml version="1.0" encoding="utf-8"?> <configuration><configSections><section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/></conf...

c# – 我是否需要在ASP.NET Core中锁定单例?【代码】

这是我的代码:public class RouteSingleton {private IDictionary<string, string> _dealCatLinks;private IDictionary<string, string> _sectionLinks;private IDictionary<string, string> _categoryLinks;private IDictionary<string, string> _materials;private IDictionary<string, string> _vendors;public RouteSingleton(IDealService dealService, ICategoryService categoryService, IVendorService vendorService){th...

c# – 在服务器场上锁定(asp.net)

我想知道是否有任何方法可以使用像MySQL Cluster这样的分布式服务器在部署在多个服务器上的asp.net Web应用程序上执行“锁定”. 例如,采用更新帐户余额的经典示例.没有两个请求应该同时更新相同的帐户余额.例如: 会员1帐户余额为100. >请求A访问服务器1以向成员1的余额添加100>请求B访问服务器2以将50添加到成员1的余额 因此,请求A将余额从100更新为200并保存.请求B将余额更新为150,并保存. 这些都恰好同时发生,因此丢失信息,因为...

在文件ASP.NET C#中写入并且之后不锁定它们【代码】

我收到此错误:进程无法访问文件(…),因为它正被另一个进程使用.我试过用File.WriteAllText;StreamWriter sw = new StreamWriter(myfilepath);sw.Write(mystring);sw.Close();sw.Dispose();;using (FileStream fstr = File.Create(myfilepath)){StreamWriter sw = new StreamWriter(myfilepath);sw.Write(mystring);sw.Close();sw.Dispose();fstr.Close();}我所要做的就是访问一个文件,在其上写,然后关闭它.我可能犯了一个愚蠢的错...

c# – 什么是锁定线程的正确方法?【代码】

在我的MVC 3 C#应用程序中,我有一些静态对象,我希望一次可用于一个请求.访问它只是通过方法,但我希望锁定在调用其方法之间. 调用只在控制器中完成,通常会有一个或两个锁定的代码块. 起初我想暴露一些静态公共对象并使用它就像lock(MyClass.lockObject) {MyClass.doStuff();MyClass.doStuff2(); },但我发现它容易出错,因为我可能会忘记把它锁在某个地方.我想知道在构造函数中使用Monitor.Enter()和在Dispose方法中使用Monitor.Exit(...

c# – 如何防止TFS 2013锁定二进制文件?

我们使用Visual Studio 2013与TFS 2013合作,并使用Gated Check-In.使用Gated Check-In,无法在本地保留待定更改,if one of the files is locked. 我们根本不使用锁,但是:If you check out a file that is of a type that is treated as binary, Visual Studio Team Foundation Server might automatically lock it because binary files cannot be merged. (07001)我们希望将TFS配置为不锁定二进制文件.我们应该怎么做?解决方法:在...

c#multithreading – 写入DB时是否需要锁定?

我有一个多线程C#2.0应用程序,其中每个线程将一些结果写入SQL Server 2000数据库表.只有一个直接的INSERT命令,没有其他逻辑. 我的问题是 – 我是否需要锁定将结果写入数据库的方法?目前有一个锁,但我怀疑它正在减慢应用程序的速度. 谢谢!解决方法:不,你不需要任何锁,但你需要为每个插入创建一个新的SqlConnection.文档说SqlConnection的实例成员不是线程安全的. 编辑2:通过在这种情况下不线程安全意味着你不能在几个线程之间共享...