Tag: c#

ASP.NET长时间运行的任务。 线程正在中止exception

ASP.NET 3.5 webapp必须启动几个需要几个小时才能完成的任务。 出于显而易见的原因,启动这些任务的页面不能等待它们完成,也不会有任何人想要等待那么长时间来获得响应,因此任务必须是异步的。 有一个Helper类来处理所有这些长时间运行的任务。 调度和执行这些任务的主要方法目前如下: public static bool ScheduleTask(TaskDescriptor task, Action action) { bool notAlreadyRunning = TasksAsync.TryAdd(task); if (notAlreadyRunning) { Thread worker = null; worker = new Thread(() => { try { action(); } catch(Exception e) { Log.LogException(e, “Worker”); } TasksAsync.RemoveTask(task); workers.Remove(worker); }); workers.Add(worker); worker.Start(); } return notAlreadyRunning; } 在早期的实现中,我们使用了ThreadPool.QueueUserWorkItem方法,但结果始终是相同的:在aprox之后。 20-30分钟一个线程被中止exception被抛出。 有谁知道为什么会这样? 或者如何预防? 更多信息: […]

如何为字典编写getter和setter?

如何为复杂数据类型(如字典)定义getter和setter? public Dictionary Users { get { return m_Users; } set { m_Users = value; } } 这会返回整个字典吗? 你能编写setter来查看是否存在特定的键值对,然后如果不存在,则添加它。 否则更新当前的键值对? 对于get,您可以返回特定的键值对而不是整个字典吗?

.NET中的进程间通信

我有一个核心.NET应用程序,需要产生一个子进程的abitrary数量。 这些进程需要能够访问核心应用程序中的某种forms的状态对象。 什么是最好的技术? 我将在进程(位图)之间移动大量数据,因此需要快速。

使用ImageResizer的Azure C#WebJob未正确设置Content-Type

我正在使用Azure WebJob来调整新上传的图像的大小。 resize有效,但新创建的图像没有在Blob存储中正确设置其内容类型。 相反,它们列在application / octet-stream中。 这里处理resize的代码: public static void ResizeImagesTask( [BlobTrigger(“input/{name}.{ext}”)] Stream inputBlob, string name, string ext, IBinder binder) { int[] sizes = { 800, 500, 250 }; var inputBytes = inputBlob.CopyToBytes(); foreach (var width in sizes) { var input = new MemoryStream(inputBytes); var output = binder.Bind(new BlobAttribute($”output/{name}-w{width}.{ext}”, FileAccess.Write)); ResizeImage(input, output, width); } } […]

与Array.toString()

如果我有一个数组并执行ToString那么只是将数组值串在一个长逗号分隔的字符串中,或​​者在数组中是不可能的?

从C#调用c函数

作为一个简单的例子,我有一个C函数接收一个int,递增它并返回递增的值。另一方面我在C#中输入文本框的输入数字。 我如何调用C函数来处理数字并从c#返回?感谢提前

Json.NET不区分大小写的属性反序列化

Json.NET将“不区分大小写的属性反序列化”列为广告function之一。 我已经读过,将首先尝试匹配指定属性的大小写,如果未找到匹配项,则执行不区分大小写的搜索。 但这似乎不是默认行为。 请参阅以下示例: var result = JsonConvert.DeserializeObject<KeyValuePair>( “{key: 123, value: \”test value\”}” ); // result is equal to: default(KeyValuePair) 如果更改JSON字符串以匹配属性的情况(“Key”和“Value”vs“key”和“value”),那么一切都很好: var result = JsonConvert.DeserializeObject<KeyValuePair>( “{Key: 123, Value: \”test value\”}” ); // result is equal to: new KeyValuePair(123, “test value”) 有没有办法执行不区分大小写的反序列化?

以编程方式确定代码是否在IIS Express下运行

我不确定这是否可能,但我希望找到一条线索,以确定当前正在执行的代码是否在IIS Express下运行。 到目前为止,我的最佳逼近,这是令人难以置信的hackish,肯定会在某些时候失败/突破: bool IsExpress = Request.ServerVariables[“SERVER_SOFTWARE”] == “Microsoft-IIS/7.5” && Int32.Parse(Request.ServerVariables[“INSTANCE_ID”]) > 1000000000; 当然必须有更好的方法。 我对Application,Server和Request对象的检查似乎没有透露任何可能提供更好洞察力的内容。 也许我只需要看一些其他对象? 更新: 我真的很好奇,如果有办法检测到这一点 – 在这一点上它真的是学术性的,我没有迫切需要使用它。 原来的问题是。 但本着回应评论的精神,特别是我有兴趣回答本网站上另一个问题/答案的批评: 如何搜索服务器的MIME地图 。 批评是发布的答案不适用于IIS Express,只适用于传统的IIS实例。 IIS Express将MIME配置存储在applicationhost.config XML文件中,我想更新该答案,以便为IIS Express提供返回该信息的方法。 我当然可以添加一些从XML中获取适当值的代码(Yay for LINQ to XML!)但我真的想让它变得更聪明。 为了清楚起见,我不需要帮助解析该文件 – 只是尝试检测代码当前是否在IIS Express引擎中执行时更优雅。 更新2: IIS 8.0 Express Beta 本周发布 ,它进一步表明我的问题中的方法很脆弱并且会破坏。 虽然它不是针对特定版本的交易破坏者,但考虑到这一点并尝试确保代码至少与今天的已知版本一起使用会很好。

C#中的手动字符串拆分

在我的代码中,我试图操纵一个字符串: Some text – 04.09.1996 – 40-18 我想把它分成三个子串: Some text , 04.09.1996和40-18 。 当我使用带有连字符的Split方法作为分隔符时,返回值是一个包含四个字符串的数组: Some text , 04.09.1996和18 。 如何使此代码如上所述工作? 谢谢。

C#和Java DES加密值不相同

我试图在C#和Java中加密相同的数据。 如果数据超过7个字节,则Java和C#加密值不相同。 输入1: a java输出: FrOzOp / 2Io8 = C#输出: FrOzOp / 2Io8 = 输入2: abc j: H9A / ah18K7I = c#: H9A / ahl8K7I = 输入3: aaaaaaaa ( 问题 ) j: Gxl7e0aWPd7j6l7uIEuMxA == c#: Gxl7e0aWPd7sf1xR6hK4VQ == 这是C#和Java方法的实现。 C#代码: public String saltTxt = “12345678”; public String Encrypt(String txt) { byte[] data = Encrypt(Encoding.UTF8.GetBytes(txt)); DESCryptoServiceProvider alg […]