是否有必要保护对多线程应用程序中引用类型的单个变量的访问?我目前锁定这个变量:
private readonly object _lock = new object();
private MyType _value;
public MyType Value
{
get { lock (_lock) return _value; }
set { lock (_lock) _value = value; }
}
Run Code Online (Sandbox Code Playgroud)
但我想知道这是否真的有必要?是不是将值赋值给字段原子?如果我不锁定这种情况可以出问题吗?
PS:MyType是一个不可变类:所有字段都在构造函数中设置,不会更改.要更改某些内容,将创建一个新实例并将其分配给上面的变量.
我PushStreamContent在ASP.NET Web API中使用将事件从服务器推送到客户端(使用服务器发送的事件)。每个发送的事件后,我打电话Flush对Stream缓存数据推送到客户端。但是,我注意到冲洗不会(总是)发生。有时,部分数据会发送到客户端,而其余的则在写入下一个事件时发送(这可能会在几秒钟后发生)。
这是一个代码示例:
public class MyController : ApiController
{
private static readonly string[] LineSeparators
= new[] { Environment.NewLine };
public HttpResponseMessage GetData(string id)
{
var response = Request.CreateResponse();
response.Content = new PushStreamContent(
new Func<Stream, HttpContent, TransportContext, Task>(StartStream),
new MediaTypeHeaderValue("text/event-stream") { CharSet = "UTF-8" });
return response;
}
private async Task StartStream(Stream outputStream, HttpContent content, TransportContext context)
{
using (outputStream)
using (var writer = new StreamWriter(outputStream, new UTF8Encoding(false)))
{
writer.NewLine = "\n";
while (true) …Run Code Online (Sandbox Code Playgroud) 这是我的第一个Stackoverflow问题,我正在学习VB并且在获取系统上所有文件夹/目录的列表时遇到一些问题.我正在使用此处包含的代码,它似乎一直工作,直到它到达回收站文件夹和其他一些系统文件夹
Sub main()
Dim DirList As New ArrayList
GetDirectories("c:\", DirList)
For Each item In DirList
'add item to listbox or text etc here
Next
End Sub
Sub GetDirectories(ByVal StartPath As String, ByRef DirectoryList As ArrayList)
Dim Dirs() As String = Directory.GetDirectories(StartPath)
DirectoryList.AddRange(Dirs)
For Each Dir As String In Dirs
GetDirectories(Dir, DirectoryList)
Next
End Sub
Run Code Online (Sandbox Code Playgroud)
谁能帮我这个?我想知道是什么原因引起了这个问题,并且是一个很好的修复方法,或者是另一种方法.
提前致谢.
我有以下HTML页面:
<html>
<head><style>
* { margin: 0; padding: 0; border: none; }
button { width: 14px; background: #F00; }
</style></head>
<body>
<button></button>
<button></button>
<button></button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我在任何桌面浏览器中运行此代码时,它都能完美运行;按钮为14像素宽。当我在iPad上的Safari中运行此代码时,按钮变宽了。按键有最小宽度吗?这个宽度可以覆盖吗?