C# 发布的项目产生错误“;调用线程必须是STA,因为许多UI组件都需要此;在DLL中创建位图时
我有一个项目,当调试工作得非常好,并已将所有内容正确地检查到TFS。当发布的项目调用dll时,我收到上面的错误消息。主项目也是用vb编写的 这是堆栈跟踪 在for each循环的开头导致代码行出错-C# 发布的项目产生错误“;调用线程必须是STA,因为许多UI组件都需要此;在DLL中创建位图时,c#,vb.net,release,C#,Vb.net,Release,我有一个项目,当调试工作得非常好,并已将所有内容正确地检查到TFS。当发布的项目调用dll时,我收到上面的错误消息。主项目也是用vb编写的 这是堆栈跟踪 在for each循环的开头导致代码行出错-Bitmap bmp=new Bitmap(Bitmap.FromFile(targetPath+“Copy-2.png”) 大部分DLL的代码- public Dictionary<string, MemoryStream> CreateW2FromBitmap(List<
Bitmap bmp=new Bitmap(Bitmap.FromFile(targetPath+“Copy-2.png”)代码>
大部分DLL的代码-
public Dictionary<string, MemoryStream> CreateW2FromBitmap(List<Employee> info, Employer employerInfo, bool fourPerPage)
{
var targetPath = System.IO.Path.GetFullPath(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "..\\..\\" + "W2Images\\"));
StringFormat rightAlign = new StringFormat(StringFormatFlags.NoClip);
StringFormat centerAlign = new StringFormat(StringFormatFlags.NoClip);
PdfPTable imageTable = new PdfPTable(2) { WidthPercentage = 82 };
imageTable.DefaultCell.Border = iTextSharp.text.Rectangle.NO_BORDER;
imageTable.DefaultCell.HorizontalAlignment = Element.ALIGN_CENTER;
rightAlign.Alignment = StringAlignment.Far;
centerAlign.Alignment = StringAlignment.Center;
var brushColor = Brushes.Black;
var W2ImageDictionary = new Dictionary<string, MemoryStream>();
var font = new System.Drawing.Font("Courier", 12);
var document = new Document(PageSize.LETTER, 0, 0, 10, 0);
foreach (var property in info)
{
Bitmap bmp = new Bitmap(Bitmap.FromFile(targetPath + "Copy-2.png"));
MemoryStream tempImageStream = new MemoryStream();
var writer = PdfWriter.GetInstance(document, tempImageStream);
var employeeCityStateZipCode = CityStateZipDelimiter(property.CityStateZip);
var employerCityStateZipCode = CityStateZipDelimiter(employerInfo.CityStateZip);
document.Open();
writer.CloseStream = false;
for (int i = 1; i < 5; i++)
{
switch (i)
{
case 1:
bmp = new Bitmap(Bitmap.FromFile(targetPath + "Copy-2.png"));
break;
case 2:
bmp = new Bitmap(Bitmap.FromFile(targetPath + "Copy-2.png"));
break;
case 3:
bmp = new Bitmap(Bitmap.FromFile(targetPath + "Copy-B.png"));
break;
case 4:
bmp = new Bitmap(Bitmap.FromFile(targetPath + "Copy-B.png"));
break;
}
公共字典CreateW2FromBitmap(列表信息、雇主雇员信息、bool fourPerPage)
{
var targetPath=System.IO.Path.GetFullPath(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,“…\ \ \ \ \ \ \”+“W2Images\”);
StringFormat rightAlign=新的StringFormat(StringFormatFlags.NoClip);
StringFormat centerAlign=新的StringFormat(StringFormatFlags.NoClip);
PdfPTable imageTable=新PdfPTable(2){宽度百分比=82};
imageTable.DefaultCell.Border=iTextSharp.text.Rectangle.NO_Border;
imageTable.DefaultCell.HorizontalAlignment=Element.ALIGN\u CENTER;
rightAlign.Alignment=StringAlignment.Far;
centerAlign.Alignment=StringAlignment.Center;
var brushColor=画笔。黑色;
var W2ImageDictionary=新字典();
var font=新系统.Drawing.font(“Courier”,12);
var文档=新文档(PageSize.LETTER,0,0,10,0);
foreach(信息中的var属性)
{
位图bmp=新位图(Bitmap.FromFile(targetPath+“Copy-2.png”);
MemoryStream tempImageStream=新的MemoryStream();
var writer=PdfWriter.GetInstance(文档,tempImageStream);
var employeeCityStateZipCode=CityStateZipDelimiter(property.CityStateZip);
var employerCityStateZipCode=CityStateZipDelimiter(employerInfo.CityStateZip);
document.Open();
writer.CloseStream=false;
对于(int i=1;i<5;i++)
{
开关(一)
{
案例1:
bmp=新位图(Bitmap.FromFile(targetPath+“Copy-2.png”);
打破
案例2:
bmp=新位图(Bitmap.FromFile(targetPath+“Copy-2.png”);
打破
案例3:
bmp=新位图(Bitmap.FromFile(targetPath+“Copy-B.png”);
打破
案例4:
bmp=新位图(Bitmap.FromFile(targetPath+“Copy-B.png”);
打破
}
修复程序正在更改图像的存储位置。它们位于主应用程序的文件夹中。希望这对将来的任何人都有帮助
Bitmap bmp=新位图(Bitmap.FromFile(“C:\\Copy-2.png”);
是调用线程STA?调用项目是什么类型的项目(WPF?Winforms?ASP.NET?其他什么?)?能否在帖子中包含异常的堆栈跟踪?我为调用添加了堆栈跟踪,但我只在运行应用程序时遇到此问题,而不是在visual studio中运行时遇到此问题。我非常确定DLL最初是一个WPF,但现在是一个具有零WPF功能的类库。主项目是一个表单,图像存储在其中在主项目的文件夹中有一个WPF异常。该异常发生在名为EmailReport()的方法中,由BackgroundWorker调用。代码段中的代码与此无关。的可能重复