4
WebClient webClient = new WebClient();
string mapPathName = Server.MapPath("\\images\\temp.jpg");
Uri uri = new Uri(mapLink);
webClient.DownloadFile(uri, mapPathName);
webClient.Dispose();
if (File.Exists(mapPathName))
    File.Delete(mapPathName);

上記のコードを使用して Google マップから暗号化された画像をダウンロードしましたが、ダウンロードが完了した後、そのファイルは使用中のため削除できませんでした。誰でもこれを解決するのを手伝ってもらえますか?

ああああああああ。申し訳ありませんが、私の間違いです。上記のコードは機能しましたが、削除する前に描画しようとすると、今回は機能しません。>_<コードは次のとおりです。

PdfDocument document = new PdfDocument();
document.PageLayout = PdfPageLayout.SinglePage;
document.Info.Title = "Created with PDFsharp";

// Create an empty page
PdfPage page = document.AddPage();

// set size
page.Size = PageSize.A4;

// Get an XGraphics object for drawing
XGraphics gfx = XGraphics.FromPdfPage(page);

WebClient webClient = new WebClient();
string mapPathName = Server.MapPath("\\images\\temp.jpg");
Uri uri = new Uri(mapLink);
webClient.DownloadFile(uri, mapPathName);

// defind position to draw the image
XRect rcImage = new XRect(x + 30, y, 410, 300);

// draw the image
gfx.DrawRectangle(XBrushes.Snow, rcImage);
gfx.DrawImage(XImage.FromFile(Server.MapPath("\\images\\temp.jpg")), rcImage);

// save pdf file
string filename = "_HelloWorld.pdf";
string filePath = Server.MapPath(filename);
if (File.Exists(filePath))
    File.Delete(filePath);

document.Save(Server.MapPath(filename));

gfx.Dispose();
page.Close();
document.Dispose();

if (File.Exists(mapPathName))
    File.Delete(mapPathName);
4

2 に答える 2

2

あなたが電話している特定の理由はありますDisposeか?これが原因かもしれません。dispose の使用を主張する場合は、dispose を呼び出す前に削除してみてください。例えば ​​。. .

webClient.DownloadFileCompleted += (o, s) =>
{
    //if (File.Exists(mapPathName)) discard, see Paolo's comments below . . .
       File.Delete(mapPathName);
};
webClient.DownloadFileAsync(uri, mapPathName);
webClient.Dispose();

using条文についても検討されていますか。これにより、通常、この種のエラーが発生するのを防ぐことができます。

于 2013-01-07T03:22:14.640 に答える
0

私は自分の問題を解決しました。代わりに

gfx.DrawImage(XImage.FromFile(Server.MapPath("\\images\\temp.jpg")), rcImage);

2行に分けました

var img = XImage.FromFile(Server.MapPath("\\images\\temp.jpg"));
gfx.DrawImage(img, rcImage);

その後

img.Dispose;

その後、画像を削除することができます:Dありがとうございました。

于 2013-01-07T09:15:50.990 に答える