PDA

View Full Version : سوال: مشکل پس از خواندن متن از Word



sobaisobai
سه شنبه 24 آبان 1390, 20:41 عصر
سلام
من با متد زیر فایل ورد رو میخونم
private string GetParagraphsInDoc(string filename)
{
Debug.Assert(!string.IsNullOrEmpty(filename));
var p = new StringBuilder();

var app = new Word.Application();

var doc = app.Documents.Open(filename, ReadOnly: true, Visible: false);
doc.Activate();
app.Selection.WholeStory();

var selection = app.Selection;

foreach (string text in selection.Paragraphs.Cast<Paragraph>().Select(paragraph => paragraph.Range.Text).Where(text => !string.IsNullOrWhiteSpace(text)))
{
p.Append(text);
}
Marshal.ReleaseComObject(app);
return p.ToString();
}
یه مشکل هست اونم اینه که هر بار که میخونه یه برنامه به نام WINWORD.EXE تو Taskmanager باز میشه و وقتی از برنامه میام بیرون همون طوری باز میمونه
واسه بستنشون باید یکی یکی ببندمشون
چیکار کنم که وقتی برنامه بسته شد همشون بسته بشن؟
ممنون

سوداگر
سه شنبه 24 آبان 1390, 21:50 عصر
توی VB یه متد Kill بود که اسم میگرفت و جسد، تحویل میداد ولی توی سی شارپ وقتی داخل Object Browser، کلمه Kill رو جستجو کردم، نتیجه این شد که:
System.Diagnostics.Process.Kill(string ProcessName)
ولی چنین کدی کار نمیکنه و فکر کنم باید رفرنس خاصی اضافه بشه.

sobaisobai
سه شنبه 24 آبان 1390, 22:14 عصر
ممنون
پیدا کردم
foreach (Process p in System.Diagnostics.Process.GetProcessesByName("winword"))
{
try
{
p.Kill();
p.WaitForExit(); // possibly with a timeout
}
catch (Win32Exception winException)
{
// process was terminating or can't be terminated - deal with it
}
catch (InvalidOperationException invalidException)
{
// process has already exited - might be able to let this one go
}
}

AliRezaPro
سه شنبه 24 آبان 1390, 22:41 عصر
شما سعی کنید از هر آبجکت یا کلاس در سی شارپ استفاده میکنید ان را در انتها دیسپاز کنید . چون دیگه این مشکلات رو به همراه نداره. و همینطور از نظر استفاده از منابع های سیستم وقتی برنامه ی شما بزرگتر میشه بهتر و بهینه تر استفاده میشه.

سوداگر
سه شنبه 24 آبان 1390, 23:03 عصر
شما سعی کنید از هر آبجکت یا کلاس در سی شارپ استفاده میکنید ان را در انتها دیسپاز کنید . چون دیگه این مشکلات رو به همراه نداره. و همینطور از نظر استفاده از منابع های سیستم وقتی برنامه ی شما بزرگتر میشه بهتر و بهینه تر استفاده میشه.
سوال یه چیز دیگه بود

AliRezaPro
سه شنبه 24 آبان 1390, 23:47 عصر
سوال یه چیز دیگه بود
ایشون در پست 3 به جوابشون رسیدن !
خواهشن قبل از زدن پست , بیشتر دقت بفرمایید

سوداگر
چهارشنبه 25 آبان 1390, 01:25 صبح
ایشون در پست 3 به جوابشون رسیدن !
خواهشن قبل از زدن پست , بیشتر دقت بفرمایید
Dispose کردن، شیء ساخته شده رو از حافظه Heap پاک میکنه ولی منظور ایشون این بود که "چطوری یه Process رو از Ram بندازم بیرون".
شما هم قبل از تذکر دادن دقت بفرمایید.