小编Şaf*_*Gür的帖子

Task.ContinueWith在任务完成执行之前运行

Main控制台应用程序的方法中:

Do().ContinueWith(t => Do())
    .ContinueWith(t => Do())
    .ContinueWith(t => Do());
Run Code Online (Sandbox Code Playgroud)

Do是一个返回的方法Task:

var source = new CancellationTokenSource();
var token = source.Token;
return Task.Factory.StartNew(() =>
{
    Console.WriteLine("Inside " + _Counter);
    token.WaitHandle.WaitOne(1000);
    Console.WriteLine(_Counter++ + " is done");
}, token);
Run Code Online (Sandbox Code Playgroud)

并且_Counter是一个整数字段:

private static int _Counter = 1;
Run Code Online (Sandbox Code Playgroud)

当我跑步时,结果如下:

内部1
1完成
内部2
内部2
内部2
2完成
3完成
4完成

所以我们假设我有一个Task叫做t和一个Action<Task>叫做a.
如果我打电话t.ContinueWith(a),一个应该被称为 牛逼完成,对吧?当一个运行,这应该意味着什么代表牛逼通话已结束. …

c# task-parallel-library

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

为什么C#编译器在XML文档中包含非公共成员?

使用时编译源代码时csc.exe,可以使用/ doc选项将源文件中的xml文档注释保存到外部xml文件中.

我想知道的是编译器为什么在该文件中包含我的代码的非公共成员的xml注释.由于我已经在源代码中有文档,因此在处理该项目时,我不需要xml文档文件中的任何内容.

如果我将dll用于另一个项目,我无论如何都不能使用非公共成员.那为什么它包含所有私人和内部成员的文档?

我还想知道是否有办法防止这种情况发生.

c# compiler-construction documentation documentation-generation xml-documentation

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

如何使用DocumentViewer显示流程文档?

我的资源中有一个简单的流程文档FlowDocument1.xaml

<FlowDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
          ColumnWidth="400" FontSize="14" FontFamily="Georgia">
    <Paragraph>
        Test
    </Paragraph>
</FlowDocument>
Run Code Online (Sandbox Code Playgroud)

我想以格式显示此文档DocumentViewer。我搜索了一个具有路径的属性,但找不到。并且以下引发异常:

<DocumentViewer x:Name="TestViewer" Document="Resources/FlowDocument1.xaml" />
Run Code Online (Sandbox Code Playgroud)

我怎样才能显示FlowDocument1.xamlDocumentViewer

wpf xaml documentviewer flowdocument

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

如何省略Home视图的控制器名称

假设我有这样的结构:

Home/
    Index
    About

Project/
    Index
    Details
Run Code Online (Sandbox Code Playgroud)

如何省略Home视图的控制器名称?

我想写{root}/About而不是{root}/Home/About.
我也想{root}/Project/Details/2工作.

这是我尝试过的RegisterRoutes:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
    name: "DefaultRoute",
    url: "{controller}/{action}/{id}",
    defaults: new
    {
        controller = "Home",
        action = "Index",
        id = UrlParameter.Optional
    }
);

routes.MapRoute(
    name: "HomeRoute",
    url: "{action}",
    defaults: new
    {
        controller = "Home",
        action = "Index"
    }
);
Run Code Online (Sandbox Code Playgroud)

编辑:我也尝试交换我的MapRoute通话顺序,但它仍然无法正常工作.
我需要的是:

{root}/Home/Index         > HomeController.Index
{root}/Home               > HomeController.Index
{root}                    > HomeController.Index
{root}/Home/About         > HomeController.About
{root}/About              > HomeController.About
{root}/Project/Index      > ProjectController.Index
{root}/Project            > …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc

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

锁定TPL的替代方案

我使用任务并行库,我需要同步访问方法,但由于任务不一定为异步操作创建线程,我不能依赖使用锁.

void Foo()
{
    lock(SyncRoot)
    {
        // Do stuff...
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我想阻止多个任务同时调用Foo,我可以使用什么而不是锁定?我需要我的任务一个接一个地调用Foo.


  • ContinueWith不是一个选项.
  • 我使用.NET 4.

c# task-parallel-library

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