小编Pav*_*ins的帖子

意外的任务取消行为

我创建了一个简单的.NET Framework 4.7.2 WPF应用程序,其中包含两个控件-文本框和按钮。这是我的代码背后:

private async void StartTest_Click(object sender, RoutedEventArgs e)
{
    Output.Clear();

    var cancellationTokenSource = new CancellationTokenSource();

    // Fire and forget
    Task.Run(async () => {
        try
        {
            await Task.Delay(TimeSpan.FromMinutes(1), cancellationTokenSource.Token);
        }
        catch (OperationCanceledException)
        {
            Task.Delay(TimeSpan.FromSeconds(3)).Wait();
            Print("Task delay has been cancelled.");
        }
    });

    await Task.Delay(TimeSpan.FromSeconds(1));
    await Task.Run(() =>
    {
        Print("Before cancellation.");
        cancellationTokenSource.Cancel();
        Print("After cancellation.");
    });
}

private void Print(string message)
{
    var threadId = Thread.CurrentThread.ManagedThreadId;
    var time = DateTime.Now.ToString("HH:mm:ss.ffff");
    Dispatcher.Invoke(() =>
    {
        Output.AppendText($"{ time } [{ threadId }] { message …
Run Code Online (Sandbox Code Playgroud)

.net c# task async-await

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

log4net%属性不起作用

我有一个小测试项目,代码如下:

class Program
{
    static void Main(string[] args)
    {
        log4net.GlobalContext.Properties["logFileName"] = "log.txt";
        log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("log4net.xml"));

        log4net.ILog logger = log4net.LogManager.GetLogger("Tests");

        logger.Debug("Test message");
    }
}
Run Code Online (Sandbox Code Playgroud)

我的log4net.xml配置文件包含以下内容:

<?xml version="1.0" encoding="utf-8" ?>
<log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <file value="%property{logFileName}" />
        <appendToFile value="true" />
        <rollingStyle value="Size" />
        <maxSizeRollBackups value="10" />
        <maximumFileSize value="100KB" />
        <staticLogFileName value="true" />
        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%utcdate{ISO8601} [%level][%logger] %message%newline" />
        </layout>
    </appender>
    <root>
        <level value="ALL" />
        <appender-ref ref="RollingFileAppender" />
    </root>
</log4net>
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么log4net创建名为%property {logFileName}的文件并且不用log.txt替换它?

log4net库取自NuGet(Id:log4net Version:2.0.3).

.net c# logging log4net log4net-configuration

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

标签 统计

.net ×2

c# ×2

async-await ×1

log4net ×1

log4net-configuration ×1

logging ×1

task ×1