相关疑难解决方法(0)

如何从getter或setter调用异步方法?

在C#中从getter或setter调用异步方法最优雅的方法是什么?

这里有一些伪代码可以帮助解释自己.

async Task<IEnumerable> MyAsyncMethod()
{
    return await DoSomethingAsync();
}

public IEnumerable MyList
{
    get
    {
         //call MyAsyncMethod() here
    }
}
Run Code Online (Sandbox Code Playgroud)

c# async-ctp

189
推荐指数
7
解决办法
10万
查看次数

在特定线程上运行工作

我想有一个特定的线程,在这个单独的线程中为任务和进程任务排队.应用程序将根据用户使用情况制作任务,并将其排入任务队列.然后单独的线程处理任务.即使队列为空,保持线程处于活动状态并使用它来处理排队任务也是至关重要的.

我已经尝试了几个TaskSchedulerwith的实现BlockingCollection并将并发限制为只有一个线程,但是当队列变空并且任务由其他线程处理时,似乎线程被释放.

你能否至少向我推荐一些如何实现这一目标的消息来源?

tl; dr尝试限制一个特定线程来处理动态添加到队列的任务.

EDIT1:

这是使用WCF和.NET framework 4.6的实验性Web应用程序.在WCF库中,我试图用一个线程处理任务来实现此行为.这个线程必须使用外部dll库初始化prolog,然后使用prolog.如果在进程中使用了其他线程,则库会抛出AccessViolationException.我做了一些研究,这很可能是因为该库中的线程管理不当.我实现了我到处都有锁的工作方式.我现在正在尝试重新实现并使其异步,因此我不会使用锁定来阻止主线程.

我不在我的电脑上,但是当我今天晚些时候回家时,我提供了一些代码.

c# multithreading task

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

如何从 .net Core 3.1 dll (WPF) 访问调度程序

我读到:.NET Dispatcher,适用于 .NET Core?

我无法应用这两种解决方案。

  • JBSnorro的解决方案:找不到如何切换到“Microsoft.NET.Sdk.WindowsDesktop”。
  • codevision的解决方案:我使用.net Core 3.1代替.net Core 3.0,使用.dll代替.exe。结果是

在此输入图像描述

知道如何从 .net-core 3.1 访问调度程序吗?

重要信息克莱门斯解决方案效果很好。此外,直接从 Visual Studio 重新加载项目的优点是可以告诉您有关 .csproj 文件中隐藏的问题的更多信息。我的 UseWPF 与 UseWpf 不匹配!

c# wpf dispatcher .net-core .net-core-3.1

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