小编Kel*_*lly的帖子

.NET缓存Sliding Expiration如何工作?

如果我使用ObjectCache并添加如下项目:

ObjectCache cache = MemoryCache.Default;
string o = "mydata";
cache.Add("mykey", o, DateTime.Now.AddDays(1));
Run Code Online (Sandbox Code Playgroud)

我知道该对象将在1天后过期.但如果在一天后使用以下方式访问对象:

object mystuff = cache["mykey"];
Run Code Online (Sandbox Code Playgroud)

这是否会重置计时器,因此现在距离上次使用密钥"mykey"访问时间为1天,或者它仍然是1/2,直到到期为止?

如果答案是否定的,并且有办法做到这一点,我很想知道.

谢谢.

.net c# caching

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

RabbitMQ和消息优先级

RabbitMQ有任何消息优先级的概念吗?我有一个问题是一些更重要的消息由于在队列中排在它之前的不太重要的消息而变慢.我希望优先级高的优先级移动到队列的前面.

我知道我可以使用两个队列"快速"队列和"慢"队列来近似这个,但这似乎是一个黑客.

有没有人知道使用RabbitMQ更好的解决方案?

rabbitmq

33
推荐指数
4
解决办法
3万
查看次数

在Caliburn.micro中设置初始窗口大小

我需要在第一次打开时设置视图的默认大小,但视图必须允许用户扩展它.(由于其他原因,我无法在WindowManager中使用SizeToContent属性.)

这一定是常见的,建议的默认窗口大小是什么?

c# wpf caliburn.micro

12
推荐指数
2
解决办法
4783
查看次数

RabbitMQ客户端如何告诉它何时失去与服务器的连接?

如果我连接到RabbitMQ并使用EventingBasicConsumer监听事件,我怎么知道我是否已经与服务器断开连接?

我知道有一个Shutdown事件,但如果我拔下网线以模拟故障,它就不会触发.

我也尝试了模型上的ModelShutdown事件和CallbackException,但似乎都没有.

编辑-----我标记为答案的那个是正确的,但它只是我解决方案的一部分.RabbitMQ中还内置了HeartBeat功能.服务器在配置文件中指定它.默认为10分钟,但您当然可以更改它.

客户端还可以通过在ConnectionFactory实例上设置RequestedHeartbeat值来请求心跳的不同间隔.

rabbitmq

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

.NET实体框架插入与批量插入

当我使用我的xxxContext对象并向表发出几个Add时,那么SaveChanges()实体框架如何将其解析为SQL?它只是循环插入到xxx中,或者如果有数百行,是否足够智能发出批量插入命令?

奖金问题:如果它没有发出批量插入有没有办法强制它,所以我的数据库性能不会被单独的插入杀死?或者批量到临时表然后像Upsert一样合并到原始表?

.net c# entity-framework

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

如何使用"与桌面交互"从调度程序运行Windows 2008任务

我有一个小型的.NET应用程序,我通过任务计划程序在Windows 2008 Server下运行.此应用程序需要打开一个excel文件,然后将其保存为csv.我尝试打开工作簿时任务失败.如果我在没有任务调度程序运行它的情况下手动运行它,该应用程序工作正常.

我将其设置为"以最高权限运行"并选中"运行天气用户是否已登录".

我的猜测是这个过程需要与桌面交互,类似于检查服务上的"与桌面交互"标志.但是我无法为计划任务找到类似的东西.

这是失败的代码:(它在workbook.open调用失败)

public static void ConvertExcelToCsv(string source, string destination)
{
    if (File.Exists(destination)) File.Delete(destination);

    Application xl = new Application();

    try
    {
        Workbook workbook = xl.Workbooks.Open(source, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
        Worksheet ws = (Worksheet)workbook.Sheets[1];
        ws.SaveAs(destination, XlFileFormat.xlCSV, Type.Missing, Type.Missing, false, false, Type.Missing, Type.Missing, Type.Missing,true);

        Marshal.ReleaseComObject(ws);
    }
    finally
    {
        xl.DisplayAlerts = false;
        xl.Quit();

        Marshal.ReleaseComObject(xl);                
    }

}
Run Code Online (Sandbox Code Playgroud)

excel scheduled-tasks task

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

C#Task.ContinueWith问题

我想在.NET中使用Task框架来安排某些东西在不同的线程上运行,然后在完成后继续执行更新UI线程上的UI的操作.(我还没有玩过它,所以对我来说不是很熟悉.)

这是代码:

Task<List<NewsItem>> fetchTask = new Task<List<NewsItem>>(() =>
        {
            List<NewsItem> items = Rss.FetchNewsItems(feed);
            return items;
        }).ContinueWith(x => UpdateNewsItems(x.Result),CancellationToken.None,TaskContinuationOptions.None,scheduler);


private void UpdateNewsItems(List<NewsItem> items)
{
...
}
Run Code Online (Sandbox Code Playgroud)

无法将类型'System.Threading.Tasks.Task'隐式转换为'System.Threading.Tasks.Task <System.Collections.Generic.List <Spark.Models.NewsItem >>'.存在显式转换

我想如果我在Task.Result将返回该类型的任务上使用List <NewsItem>的通用签名,那么我可以将它传递给我的方法......我在这里做错了什么?

c# task

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

像Chrome这样的WPF Docking?

我正在尝试为WPF找到一个更像谷歌Chrome的停靠库.打开两个镀铬窗口的用户可以从一个选项卡中取出一个选项卡并将其放入另一个选项卡中.

我一直在尝试AvalonDock,但它只让DockableContent有一个对接管理器,当它移动到另一个管理器时,我找不到一个很好的方式来交换管理器.

有人知道如何用AvalonDock或任何其他库来做到这一点?

wpf docking

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

WCF NetTcpBinding是否提供持久连接?

使用WCF制作客户端/服务器式应用程序,但是我找不到任何解释NetTcpBinding是否提供持久连接的文档?

我希望我的客户端连接并保持连接到服务器几个星期.(是的,我知道我需要处理断线等...)

NetTcpBinding是否允许这样的长连接?如果有,我需要指定什么或这是默认行为?

c# wcf

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

.NET 4.7返回元组和可空值

好吧,我想在.NET 4.6中有这个简单的程序:

using System;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static async void Main()
        {
            var data = await Task.Run(() =>
            {
                try
                {
                    return GetResults();
                }
                catch
                {
                    return null;
                }
            });

            Console.WriteLine(data);
        }

        private static Tuple<int,int> GetResults()
        {
            return new Tuple<int,int>(1,1);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

工作良好.因此,使用.NET 4.7,我们有了新的Tuple值类型.所以,如果我转换它,它变成:

using System;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static async void Main()
        {
            var data = await Task.Run(() =>
            {
                try
                {
                    return GetResults();
                }
                catch
                {
                    return …
Run Code Online (Sandbox Code Playgroud)

c# tuples .net-4.7

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