小编Tom*_*ier的帖子

在这种情况下需要锁吗?

是否有必要保护对多线程应用程序中引用类型的单个变量的访问?我目前锁定这个变量:

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是一个不可变类:所有字段都在构造函数中设置,不会更改.要更改某些内容,将创建一个新实例并将其分配给上面的变量.

c# multithreading locking

11
推荐指数
2
解决办法
582
查看次数

ASP.NET Web API:PushStreamContent刷新不刷新

PushStreamContent在ASP.NET Web API中使用将事件从服务器推送到客户端(使用服务器发送的事件)。每个发送的事件后,我打电话FlushStream缓存数据推送到客户端。但是,我注意到冲洗不会(总是)发生。有时,部分数据会发送到客户端,而其余的则在写入下一个事件时发送(这可能会在几秒钟后发生)。

这是一个代码示例:

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)

c# server-sent-events asp.net-web-api pushstreamcontent

7
推荐指数
1
解决办法
1676
查看次数

获取VB.net中的所有文件夹/目录列表

这是我的第一个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)

谁能帮我这个?我想知道是什么原因引起了这个问题,并且是一个很好的修复方法,或者是另一种方法.

提前致谢.

vb.net

5
推荐指数
2
解决办法
3万
查看次数

是否可以在iPad的Safari中覆盖按钮的最小宽度?

我有以下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中运行此代码时,按钮变宽了。按键有最小宽度吗?这个宽度可以覆盖吗?

safari button width ipad

2
推荐指数
2
解决办法
1262
查看次数