Im을 작성하면 Label
이고, 때로는 .DrawToBitmap()
을 사용합니다. 그 이유를 잘 모릅니다 만, 필자는 잠시 동안 내 프로그램을 실행 (종종 .DrawToBitmap()
를 호출) 후 나는 예외를 얻을 :이 자주DrawToBitmap - System.ArgumentException : 매개 변수가 유효하지 않습니다.
System.ArgumentException: Parameter is not valid.
at System.Drawing.Bitmap..ctor(Int32 width, Int32 height, PixelFormat format)
at System.Drawing.Bitmap..ctor(Int32 width, Int32 height)
은 어떻게 든 내가 호출 할 수 없습니다이 기능을. 나는 근본적으로 이것을 시도 할 경우
while(true)
{
System.Windows.Forms.Label label = new Label();
label.Font = new Font("Arial", 20);
label.Text = "test";
try
{
Bitmap image = new Bitmap(300, 500);
label.DrawToBitmap(image, label.ClientRectangle);
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
을 나는 5 ~ 6 초 (1,000에서 2,000 사이 전화)을 제외한 후 얻었다. 문제가 무엇입니까? 이것을 피하는 방법?
편집 : Dispose()
과 함께 아이디어를 주셔서 감사합니다. 어쨌든 label
에 사용하면 모든 것이 완벽하게 작동합니다. 비트 맵에서 사용하지 않더라도 괜찮습니다. 두 답변 모두 훌륭합니다. (
안녕하세요. 처음에는 (Bitmap ...) => 전혀 변경하지 않았습니다. 그러나 각 호출이 끝날 때 label.Dispose()를 사용할 때마다 괜찮았다. :) 감사합니다. 30.000 호출로 테스트 했으므로 지금은 괜찮다고 생각합니다. without label.Dispose() 1000-2000 호출 후에 예외가 발생합니다. 라벨을 폐기해야한다고 생각한 적이 없어. – miri
@miri : @HansPassant처럼 : 레이블을 삭제하면 예외가 발생할 것이라고 생각했을 것입니다. 필자는 글꼴과 비트 맵을 'using'블록으로 묶어야한다고 생각한다. 라벨이 어떻게 다른 방식으로 사용되는지 보지 않고 라벨 폐기 방법을 벗어날 수있는 방법을 모르겠습니다. – IAbstract