Einzelnen Beitrag anzeigen
Alt 01.09.2004, 15:29   #5
Daywalker23
Jr. Member
 
Registriert seit: 10.08.2004
Alter: 44
Beiträge: 33


Standard

Code:
protected System.Web.UI.WebControls.Table myTable;
		protected DSOleFile.CustomProperties custProps;
		protected DSOleFile.PropertyReader objPropReader;
		protected DSOleFile.DocumentProperties objDocumentProps;
	
		private void Page_Load(object sender, System.EventArgs e)
		{			
			try
			{					
				string strDirectory = @"c:\temp";
				objPropReader = new DSOleFile.PropertyReaderClass();
				ArrayList arrListDocumentFullName = new ArrayList();
				ArrayList arrListDocumentName = new ArrayList();

				DirectoryInfo di = new DirectoryInfo(strDirectory);
								
				FileInfo[] rgFiles = di.GetFiles("*.doc");

				foreach(FileInfo objFileInfo in rgFiles)
				{
					System.IO.FileAttributes objAttrFile = System.IO.File.GetAttributes(objFileInfo.FullName);

					if ((objAttrFile & (System.IO.FileAttributes.Hidden | System.IO.FileAttributes.System)) != 0)
					{
						Response.Write(objFileInfo.Name + ": Hidden Datei
");
					}
					else
					{
						arrListDocumentFullName.Add(objFileInfo.FullName);
						arrListDocumentName.Add(objFileInfo.Name);
					}			
				}

				int intPropCount = 0;
				object[] objIndex;					
				
				string strSharePath = @"\\wlcomgtd\temp\";
				string strFileName = "";
				string strValue = "";				

				for(int i = 0; i < arrListDocumentFullName.Count; i++)
				{
					strFileName = arrListDocumentFullName[i].ToString();
					
					objDocumentProps = objPropReader.GetDocumentProperties(strFileName);
					System.Runtime.InteropServices.Marshal.ReleaseComObject(objPropReader);
					objPropReader = null;

					intPropCount = objDocumentProps.CustomProperties.Count;
					objIndex = new object[intPropCount];
					object obj = null;
						
					TableRow row = new TableRow();
					TableCell cellName = new TableCell();
					cellName.Text = "<a href =" + strSharePath + arrListDocumentName[i].ToString() + ">" + arrListDocumentName[i].ToString() + "</a>";					
					cellName.RowSpan = 2;
					cellName.BackColor = Color.White;
					row.Cells.Add(cellName);		

					for(int a = 1; a < intPropCount+1; a++)
					{
						obj = a;
						objIndex[a-1] = objDocumentProps.CustomProperties[obj].Name;

						TableCell cellPropName = new TableCell();
						cellPropName.Text = objDocumentProps.CustomProperties[obj].Name;
							
						row.Controls.Add(cellPropName);
					}						
					row.BackColor = Color.LightGray;
					myTable.Rows.Add(row);
					
					TableRow row1 = new TableRow();

					for(int y = 0; y < intPropCount; y++)
					{						
//						strValue = "Nicht vorhanden";
						custProps = objDocumentProps.CustomProperties;
						strValue = objDocumentProps.CustomProperties[objIndex[y]].get_Value().ToString();
						TableCell cell2 = new TableCell();
						cell2.Text = strValue;
						row1.Cells.Add(cell2);
					}

					myTable.Rows.Add(row1);	

 System.Runtime.InteropServices.Marshal.ReleaseComObject(objDocumentProps);				
				objDocumentProps = null;
				GC.Collect();
				GC.WaitForPendingFinalizers();					
			}
			catch(System.Runtime.InteropServices.COMException ex)
			{
				Response.Write(ex.ToString());
			}				
		}					
				}
Einfach das releasen des Objektes in die Schleife tun, damit nach jedem Schleifendurchlauf das Objekt wieder freigegeben wird.

Mfg

Gerald
Daywalker23 ist offline   Mit Zitat antworten