首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BackgroundAgent ReaderWriterLockSlim同步

BackgroundAgent ReaderWriterLockSlim同步
EN

Stack Overflow用户
提问于 2014-08-16 05:41:07
回答 2查看 34关注 0票数 0

我试图同步前台和BackgroundAgent之间对BackgroundAgent的访问。问题是,当我进入锁时,我有一个线程,但是在等待存储访问之后,线程是另一个线程,我得到了SynchronizationLockException。有没有人知道解决这个问题的方法。为什么线程在一开始是不同的?谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-16 20:19:17

不能用async代码使用线程仿射锁。使用后台线程上的async代码,任何线程池线程都可以恢复async方法。UI线程也不会更好;在await之后,您将继续使用UI线程,但是任何任意代码都会在此期间运行,这完全违背了锁的目的。

我建议您改用SemaphoreSlim

票数 1
EN

Stack Overflow用户

发布于 2014-08-19 18:05:30

后台代理在一个单独的过程中工作。

您不能使用SemaphoreSlim,因为您需要一个命名的同步原语来同步两个进程。当我做您正在做的事情时,我使用了一个命名的Mutex实例+阻塞文件IO,它发生在一个线程中,但是我只需要编写几千字节的最大值。

如果需要并发编写大型文件,可以将它们异步写入临时文件,然后等待互斥,将临时文件重命名为目标文件名,然后释放互斥体。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25337293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档