小编Ant*_*kov的帖子

使用ASP.NET 5导出为pdf

我正在研究MVC 6应用程序(DNX Core 5.0框架).不幸的是,我找不到任何pdf导出库.

任何帮助将不胜感激.

asp.net-core-mvc dnx50 asp.net-core

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

如何使用 IntersectionObserver 最初检查元素是否相交

目标: 我想对页面加载时相交的一组元素执行一个操作,并单独处理所有其他元素(当前不相交)。

问题: 每个观察者都有自己的回调,我无法同步获取一组观察者的结果。

可能的解决方案: 如果可以首先询问相交观察者该元素是否相交。据我所知,没有这样的功能,所以每个想法或帮助将不胜感激。

javascript observers intersection-observer

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

如何在类中注入强类型信号集线器 [ASP CORE 2.2]

我想在服务中注入我的强类型集线器,但我不喜欢 Microsoft 所示示例中的某些内容 - https://docs.microsoft.com/en-us/aspnet/core/signalr/hubcontext?view =aspnetcore-2.2(注入强类型 HubContext)

public class ChatController : Controller
{
    public IHubContext<ChatHub, IChatClient> _strongChatHubContext { get; }

    public ChatController(IHubContext<ChatHub, IChatClient> chatHubContext)
    {
        _strongChatHubContext = chatHubContext;
    }

    public async Task SendMessage(string message)
    {
        await _strongChatHubContext.Clients.All.ReceiveMessage(message);
    }
}
Run Code Online (Sandbox Code Playgroud)

在这个例子ChatHub中耦合到ChatController.

所以我想注入用通用接口参数定义的集线器本身,并且不会在我的服务中定义它的具体实现。这是示例代码

public interface IReportProcessingClient
{
    Task SendReportInfo(ReportProgressModel report);
}
Run Code Online (Sandbox Code Playgroud)
public class ReportProcessingHub : Hub<IReportProcessingClient>
{
    public async Task SendMessage(ReportProgressModel report)
    {
        await Clients.All.SendReportInfo(report);
    }
}

Run Code Online (Sandbox Code Playgroud)
 public class ReportInfoHostedService : IHostedService, IDisposable
 {
     private readonly Hub<IReportProcessingClient> …
Run Code Online (Sandbox Code Playgroud)

signalr signalr-hub .net-core asp.net-core asp.net-core-signalr

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

当 CPU 不受“SemaphoreSlim.WaitAsync”使用的影响时,有哪些替代方案?

我有一个程序正在执行长时间运行的任务,该程序应该在程序启动时启动,并且应该可以在此后的任何时刻重新启动。

我的目的是,如果调用“重新启动”,则会发生以下情况:

  • 要求完成所有任务
  • 等待所有任务完成
  • 所有功能重新启动

我想使用 async/await 并仍然锁定启动所有任务的过程,以确保在上一个启动/重新启动完成之前不会进行任何重新启动。

正如我所看到的,由于多种原因,async/await 不适用于锁定状态,因此我最终使用了 SemaphoreSlim,它对我来说非常有用。这是我的代码:

private readonly SemaphoreSlim m_semaphoreSlim;
private CancellationTokenSource m_cancellationTokenSource;
private CancellationToken m_cancellationToken;

public FeedClientService(IList<IFeedConfigurationBuilder> feedConfigs)
{
    m_semaphoreSlim = new SemaphoreSlim(1, 1);
    m_feedConfigs = feedConfigs;
}

public void Start()
{
    Task.Run(() => this.FetchFeeds());
}

public void Restart()
{
    if (m_cancellationTokenSource != null) m_cancellationTokenSource.Cancel();

    Task.Run(() => this.FetchFeeds());
}

private async Task FetchFeeds()
{
    try
    {
        await m_semaphoreSlim.WaitAsync();

        m_cancellationTokenSource = new CancellationTokenSource();
        m_cancellationToken = m_cancellationTokenSource.Token;

        Task[] tasks = new Task[m_feedConfigs.Count];
        for (int i = …
Run Code Online (Sandbox Code Playgroud)

c# multithreading semaphore async-await

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