C#从元数据中获取video文件持续时间

我正在尝试从文件中读取元数据。 我只需要Video – > Length属性,但是我无法找到一种简单的方法来读取这些信息。 我认为这很容易,因为它在资源管理器中默认是可见的,但是这看起来比我预期的要复杂得多。 我最接近的是使用: Microsoft.DirectX.AudioVideoPlayback.Video video = new Microsoft.DirectX.AudioVideoPlayback.Video(str); double duration = video.Duration; 但是这会引发LoaderLockexception,我不知道如何处理它。 有任何想法吗?

在卷纸上打印

我正在使用带Winforms的C#。 我想在纸卷上打印钞票。 纸张的宽度为3英寸,但纸张的长度是动态的(它是卷纸)。 长度取决于列表中有多少项。 例如,在购买时如果有100件商品售出那么它将是相当长的卷,而对于购买的单件商品它将是很小的长度。 当我打印报告时,在结束作业之后,打印机会弹出最后一页而不是我需要的页面。 只要A4尺寸就可以弹出纸张。 我想打印所需的行,然后停止打印。 我使用一卷纸,而不是A4或A3和Epson LQ-300 + II打印机。 更具体地说,始终对页面大小的单元进行打印。 如果我将页面设置为3英寸x 8英寸,那么我总是打印出8英寸长的打印输出。 如果我要打印一张9英寸的钞票,我最终会打印出16英寸的纸张,浪费7英寸的纸张。 如何打印最后一页只需要它就可以了? 这是代码: private void printDoc_PrintPage(Object sender, PrintPageEventArgs e) { Font printFont = new Font(“Courier New”, 12); int y = 15; e.Graphics.DrawString(“a Line”, printFont, Brushes.Black, 0, y); y = y + 20; e.Graphics.DrawString(” Line”, printFont, Brushes.Black, 0, y); y = […]

使用C#的XML注释cref属性和params语法

在C#中,我试图使用来引用包含params关键字的方法签名。 我知道这会将参数列表转换为数组,但我甚至无法弄清楚如何在CREF属性中引用数组。 我在搜索中找不到任何内容,也没有人知道任何想法。 编译器在方括号上窒息。 我已经尝试了各种不同的组合,使用花括号,使用Array类,但没有任何工作。 有谁知道这个?

Javascript和C#交叉编译和转换

将Javascript交叉编译或转换为C#并返回的各种工具有哪些? 如何在JS中用C#或C#执行JS? 这是一个很受欢迎的问题,我将为此提供答案。

Winforms – 多选下拉列表

我正在购买下拉列表控件,允许我选择多个项目。 类似于CheckedListbox的东西,但是在下拉列表中(我不希望它占据屏幕的一大块)。 在这一点上,我非常确信没有这样的控件内置.NET。 注意这是Winforms,而不是ASP.NET。 有什么建议?

为什么调用AppDomain.Unload不会导致垃圾回收?

当我执行AppDomain.Unload(myDomain)时,我希望它也可以执行完整的垃圾回收。 根据Jeffrey Richter在“CLR via C#”中的说法,他说在AppDomain.Unload期间: CLR强制进行垃圾收集,回收由现在卸载的AppDomain创建的任何对象使用的内存。 调用这些对象的Finalize方法,使对象有机会正确地清理自己。 根据“自定义.NET Framework公共语言运行时”中的“Steven Pratschner”: 在所有终结器运行并且域中不再执行任何线程之后,CLR就可以卸载内部实现中使用的所有内存中数据结构。 但是,在此之前,必须收集驻留在域中的对象。 发生下一次垃圾收集后,将从进程地址空间卸载应用程序域数据结构,并将该域视为已卸载。 我误解了他们的话吗? 我做了以下解决方案来重现意外行为(在.net 2.0 sp2中): 包含此接口的名为“Interfaces”的类库项目: public interface IXmlClass { void AllocateMemory(int size); void Collect(); } 一个名为“ClassLibrary1”的类库项目,它引用了“Interfaces”并包含了这个类: public class XmlClass : MarshalByRefObject, IXmlClass { private byte[] b; public void AllocateMemory(int size) { this.b = new byte[size]; } public void Collect() { Console.WriteLine(“Call explicit […]

为什么ASP.NET Identity 2.0使用GUID /字符串作为用户ID?

正如标题所说,我想知道,为什么ASP.NET Identity 2.0使用带有GUID的字符串作为用户表的主要群集密钥。 这对整数id有什么好处吗? 我只看到问题,GUID不是聚簇索引的最佳选择。 我错过了什么或整数仍然是更好的选择吗?

捕获滚动​​窗口内容屏幕截图

我需要使用.NET捕获滚动窗口客户区的屏幕截图。 我的首要任务是捕获网页截图。 但这可能不是唯一一个用例。 例如,它也可以是记事本中的文本区域。 某些应用程序(FastStone Capture,PicPick)可以模拟用户行为以到达可滚动区域的隐藏部分并捕获它。 我正在寻找类似这样的东西或建议替代方法来获得相同的结果。

EF中IDatabaseInitializer的正确用法是什么?

我有一个自定义DatabaseInitialiser,如下所示 /// /// Implements the IDatabaseInitializer to provide a custom database initialisation for the context. /// /// TContext is the DbContext public class ParikshaDataBaseInitializer : IDatabaseInitializer where TContext : DbContext { /// /// The method to Initialise the database. /// Takes care of the database cannot be dropped since it is in use problem while […]

SynchronizationContext.Send和SynchronizationContext.Post有什么区别?

感谢Jeremy Miller在日常.NET开发的function编程方面所做的出色工作,我有一个工作的命令执行器,可以完成我想要的所有工作(对线程池进行繁重的工作,将结果或错误发送回同步环境,甚至发布回到同步上下文),但我无法解释为什么它使用来自线程池的SynchronizationContext.Send和来自Func Synchronization.Post传递给执行繁重工作的方法。 我已经多次阅读过这些文档,但是我无法直截了当地了解它的区别。 我应该从一个名为Send的事实中得到什么,一个叫做Post ? 我感觉神奇的是Send “启动同步请求”和Post “启动异步请求”,但这两个请求都来自线程池,需要发送/发回到UI线程。 有人可以解释这个区别,即使它只是一个助记符设备让我知道何时选择一个而不是另一个? 如果重要,这是我的测试代码 ,我使用Post将进度发送回UI: private Action _ExecuteCommand (SynchronizationContext context , Action progress , Action after) { int count = 3; int accumulatedValue = 0; int threadId = Thread.CurrentThread.ManagedThreadId; for (int i = 0; i after(threadId, accumulatedValue); } _ExecuteCommand方法作为下面的command参数传入,主要来自原始文章,它使用Send将完成和错误消息发送回UI: public void Execute(Func command, Action error) { ThreadPool.QueueUserWorkItem(o => […]