小编Alo*_*lon的帖子

c#非常小的控制台应用程序中的默认线程(Visual Studio 2012)

我试图弄清楚每个新的c#应用程序中出现的线程的目的是什么.我用空的Main函数创建了一个新的控制台应用程序:

static void Main(string[] args)
{
}
Run Code Online (Sandbox Code Playgroud)

并在函数的末尾放置一个断点,然后我查看了线程窗口:

默认线程

有时它显示8个线程,有时7个线程.

任何人都可以解释所有这些线程的目的是什么,为什么我需要它们用于这样一个简单的项目?

c# multithreading visual-studio-2012

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

使用 CI/CD 将 git 存储库的每个子目录部署到不同的目标

我有一个包含多个项目的 git 存储库。每个项目的代码都可以在专用的子目录下找到。每个项目都有自己的部署过程。我希望当我在项目目录下推送提交时,它会部署正确的项目(并且仅部署它)。我目前正在使用 bitbucket pipeline,但是,它似乎没有这个选项。我怎样才能做到这一点?(我可以切换到另一个 CI/CD 工具)

git continuous-integration continuous-deployment bitbucket-pipelines

5
推荐指数
1
解决办法
1072
查看次数

创建一个异步方法,包装订阅并在总线上发布

我有一种实现此接口的总线:

public interface IBus
{
    void Publish<T>(T t);
    void Subscribe<T>(Guid subscriptionId, Action<T> action);
    void Unsubscribe<T>(Guid subscriptionId);
}
Run Code Online (Sandbox Code Playgroud)

以下是我如何使用它的示例:

public void PrintName()
{
    IBus bus = new Bus();
    var id = Guid.NewGuid();
    bus.Subscribe<ReplyUserName>(id, replyUserName =>
    {
        bus.Unsubscribe<ReplyUserName>(id);
        Console.WriteLine(replyUserName.UserName);
    });

    Bus.Publish(new RequestUserName());
}
Run Code Online (Sandbox Code Playgroud)

这里是RequestUserName和ReplyUserName类:

public class RequestUserName {}

public class ReplyUserName
{
    public string UserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

但是我想写一个扩展方法,用异步包装它:

public static class BusExtension
{
    public static async Task<TResult> Request<TRequest, TResult>(this IBus bus, TRequest request)
    {
        // TODO...
    }
}
Run Code Online (Sandbox Code Playgroud)

这样我就能用这样的方式编写前面的代码: …

c# asynchronous publish-subscribe c#-5.0 .net-4.5

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