相关疑难解决方法(0)

等到文件在.NET中解锁

在文件解锁并且可以读取和重命名之前,阻塞线程的最简单方法是什么?例如,.NET Framework中的某个地方是否存在WaitOnFile()?

我有一个服务,使用FileSystemWatcher查找要传输到FTP站点的文件,但文件创建事件在另一个进程写完文件之前触发.

理想的解决方案将有一个超时期限,因此线程在放弃之前不会永久挂起.

编辑:在尝试下面的一些解决方案后,我最终更改系统,以便所有文件写入Path.GetTempFileName(),然后执行File.Move()到最终位置.一旦FileSystemWatcher事件被触发,该文件就已经完成.

.net file .net-3.5

94
推荐指数
5
解决办法
7万
查看次数

C#通过windows api从文件中获取缩略图

Windows资源管理器可以显示文件的缩略图.这些缩略图由核心和第三方shell扩展提供.

我知道如何扩展shell以向Windows提供缩略图.

我想要做的是使用C#通过shell从系统上的任何文件中检索缩略图.这可能吗?

本质上,我正在编写一个自定义文件浏览器,我想显示缩略图,并且无法解析地球上的每个文件以制作我自己的缩略图.

澄清:许多答案似乎都围绕网页缩略图或缩放图像.但这根本不是我想要的.我想要的是向Windows询问这些文件类型的缩略图:.DOC,.PDF,.3DM,.DWG ......和mabye大约十几个.我不想自己解析,渲染和制作缩略图,因为Windows已经知道如何.

我作为答案发布的代码实际上有用......也许它可以简化并清理一下.

c# windows-shell

69
推荐指数
3
解决办法
6万
查看次数

用于ASP.NET的System.Drawing的替代方案?

经过几天跟踪奇怪的GDI +错误,我偶然发现了MSDN上的这个小宝石:

System.Drawing命名空间中的类不支持在Windows或ASP.NET服务中使用.尝试在其中一种应用程序类型中使用这些类可能会产生意外问题,例如服务性能下降和运行时异常.

我不知道"ASP.NET服务"在这种情况下是否意味着"Web应用程序",但"服务性能降低"当然似乎涵盖了"GDI +中出现一般性错误"和"内存不足"错误的随机分类我的应用程序正在抛出 - 读取和写入JPEG图像的间歇性,不可重现的错误 - 在许多情况下 - 实际上是由System.Drawing.Imaging首先创建的.

那么 - 如果GDI +无法在Web应用程序中可靠地读取和写入JPEG文件,那么我应该使用什么呢?

我希望用户能够上传图像(需要JPEG,其他格式很好),可靠地重新采样,并在出现任何问题时显示有用的错误消息.有任何想法吗?WPF的System.Media命名空间值得考虑吗?

编辑:是的,我知道GDI +"大部分时间都在工作".这还不够好,因为当它失败时,它会以一种无法隔离或优雅地恢复的方式这样做.我对适合您的GDI +代码示例不感兴趣:我正在寻找用于图像处理的替代库.

c# asp.net system.drawing gdi+ system.drawing.imaging

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

使用 WIC 快速创建符合 EXIF 方向标签的缩小位图

我正在寻找最快的方法来创建按比例缩小的位图,以尊重 EXIF 方向标签

参考:https : //weblogs.asp.net/bleroy/the-fastest-way-to-resize-images-from-asp-net-and-it-s-more-supported-ish

目前我使用以下代码创建一个尊重 EXIF 方向标签的位图

  static Bitmap FixImageOrientation(Bitmap srce)
        {
            const int ExifOrientationId = 0x112;
            // Read orientation tag
            if (!srce.PropertyIdList.Contains(ExifOrientationId)) return srce;
            var prop = srce.GetPropertyItem(ExifOrientationId);
            var orient = BitConverter.ToInt16(prop.Value, 0);
            // Force value to 1
            prop.Value = BitConverter.GetBytes((short)1);
            srce.SetPropertyItem(prop);

            // Rotate/flip image according to <orient>
            switch (orient)
            {
                case 1:
                    srce.RotateFlip(RotateFlipType.RotateNoneFlipNone);
                    return srce;


                case 2:
                    srce.RotateFlip(RotateFlipType.RotateNoneFlipX);
                    return srce;

                case 3:
                    srce.RotateFlip(RotateFlipType.Rotate180FlipNone);
                    return srce;

                case 4:
                    srce.RotateFlip(RotateFlipType.Rotate180FlipX);
                    return srce;

                case 5:
                    srce.RotateFlip(RotateFlipType.Rotate90FlipX);
                    return srce; …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf system.drawing wic

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