小编Raf*_*afa的帖子

Angularjs控制器析构函数

我有一个AngularJs应用程序.我将控制器用于某些子范围.在每个Controller中,我可以设置许多属于相应子范围的变量.当AngularJs实例化一个控制器时,有一个构造函数,我可以在其中为我的子范围变量设置一个默认值.

我有控制器"析构函数"吗?我怎么知道控制器什么时候关闭并且范围正在被清理(由$ destroy函数销毁)?

谢谢!

angularjs angularjs-scope

28
推荐指数
1
解决办法
1万
查看次数

为什么锁定对象必须是只读的?

实现锁时,我曾经在我的类中创建一个私有对象:

如果我想确保它被锁定在创建我的类的线程中:

private object Locker = new object();
Run Code Online (Sandbox Code Playgroud)

如果我想确保它将被锁定我的应用程序中的所有线程:

private static object Locker = new object();
Run Code Online (Sandbox Code Playgroud)

但是这里: 为什么锁定对象必须是静态的?

在许多其他问题中,每个人都说对象必须是readonly.我没有找到原因 - 即使在MSDN或JavaDoc中也没有.

由于我经常使用这种结构,有人可以向我解释我为什么要使用它readonly?

谢谢!

c# multithreading

24
推荐指数
4
解决办法
1万
查看次数

使用内存映射文件的缺点

我的Web服务每分钟写入数千个事务,我们将它们保存在高清上.

我正在测试保存这些文件的不同方法,我使用标准IO和MemoryMapped文件进行了一些测试.在我的结果中,使用MemoryMapped文件编写文件(20 k文本文件)比标准IO快4倍,我无法找到任何缺点.

由于我对这项技术没有那么多经验,你认为我可能会遇到使用它们的任何问题,或者你没有看到任何不利之处?

谢谢!

编辑1,这里的来源:

namespace FileWritingTests.Writers {
    public class MappedFileWriter : ITestWriter {
        public void Write(string content, string path,string id) {
            Byte[] data = System.Text.Encoding.UTF8.GetBytes(content);

            using (var fileStream = new FileStream(path, FileMode.Create, FileAccess.ReadWrite, FileShare.None))

            using (MemoryMappedFile memoryMapped = MemoryMappedFile.CreateFromFile(fileStream, id, data.Count(),
                MemoryMappedFileAccess.ReadWrite, new MemoryMappedFileSecurity(), HandleInheritability.Inheritable, true)) {
                var viewStream = memoryMapped.CreateViewStream();
                viewStream.Write(data, 0, data.Length);                       
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是测试人员:

  public TimeSpan Run(int iterations, Writers.ITestWriter tester, String subfolder) {
            Console.WriteLine(" -- Starting test {0} with {1} file writings",subfolder, …
Run Code Online (Sandbox Code Playgroud)

.net c# performance .net-4.0 memory-mapped-files

4
推荐指数
1
解决办法
4988
查看次数

XSocket.net.如何从不是控制器的对象向客户端发送消息

我有一个启动服务器的类:

public class SocketServer
{
    private static IXSocketServerContainer server = null;

    public SocketServer()
    {
        server = XSockets.Plugin.Framework.Composable
                      .GetExport<IXSocketServerContainer>();
    }

    public bool StartServers()
    {
        try
        {
            server.StartServers();
            return true;
        } catch
        {
            return false;
        }
    }
Run Code Online (Sandbox Code Playgroud)

这个类有一个方法:

public void SendEventMessageToAllClients(string message)
{
    XSockets.Core.XSocket.Helpers.XSocketHelper
        .SendToAll<MyController>(new MyController(), message, "events");
}
Run Code Online (Sandbox Code Playgroud)

MyController我自己的控制器在哪里,它被实现,服务器可以找到它,这个方法工作.

现在我想用一种新方法扩展功能,允许我将事件发送到特定客户端:

    public void SendEventMessageToClient(string clientId, string message)
    {
        XSockets.Core.XSocket.Helpers.XSocketHelper
             .SendTo<MyController>(new MyController(), 
                                   p => p.ClientId == clientId, message, "events");
    }
Run Code Online (Sandbox Code Playgroud)

这是正确的方法还是我做错了什么?

谢谢!

xsockets.net

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