PDA

View Full Version : مشکل در اجرای برنامه



negar84
سه شنبه 04 مهر 1385, 14:18 عصر
سلام
من وقتی برنامه ام را از روی source اش اجرا می کنم یک سری از دستورات را انجام نمی ده در حالیکه بدون هیچ تغییری وقتی از روی فایل اجراییش اجرا می کنم کاملا درست جواب می ده ....
چرا این جوری می شه؟

negar84
چهارشنبه 05 مهر 1385, 12:22 عصر
یعنی هیچ کس بلد نیست ؟ اصلا قبلا کسی با همچین مشکلی مواجه شده ؟

محمد میرمصطفی
چهارشنبه 05 مهر 1385, 13:28 عصر
1- ظرف 12 ساعت که همه تو سایت نمیان. عجله نکن.
2- میشه source یا قسمتی از اونه بدازی تو سایت ببینیم چشه؟

negar84
چهارشنبه 05 مهر 1385, 14:00 عصر
بیبنید توی این تابعه که مشکل داره وارد حلقه for نمی شه (در اجرای خط به خط ) ولی وقتی از روی فایل exe اجراش می کنم درست جواب می ده
public void startModem()
{
int nError = 0;
TAPI.lineextensionid lpExtensionID = new TAPI.lineextensionid();
int lUnused = 0;
int lLineID = 0;
int lNegVer = 0;
long lPrivilege = 0;
long lMediaMode = 0;
IntPtr HInstance = (IntPtr)0;
lPrivilege = TAPI.LINECALLPRIVILEGE_OWNER + TAPI.LINECALLPRIVILEGE_MONITOR;
lMediaMode = 4;
Module thisModule;
thisModule = Assembly.GetExecutingAssembly().GetModules()[0];
HInstance = Marshal.GetHINSTANCE(thisModule);
TAPI.LineCallBackDelegate callback = new TAPI.LineCallBackDelegate(TAPI.LineCallBack);
int Unused = 0;
nError = TAPI.lineInitialize(ref TAPI.hTAPI, HInstance.ToInt32(), callback, ref Unused, ref TAPI.lNumLines);
for (lLineID = 0; lLineID < TAPI.lNumLines; lLineID++)
{
nError = TAPI.lineNegotiateAPIVersion(TAPI.hTAPI, lLineID, TAPI.TAPIVERSION, TAPI.TAPIVERSION, ref lNegVer, ref lpExtensionID);
MessageBox.Show(TAPI.lNumLines.ToString());
MessageBox.Show(nError.ToString());
do
{
nError = TAPI.lineOpen(TAPI.hTAPI, lLineID, ref TAPI.hLine, lNegVer, lUnused, ref lUnused, (int)lPrivilege, (int)lMediaMode, ref lUnused);
lMediaMode++;
} while (nError < 0 && lMediaMode < 100);
if (nError == 0) break;
}

TAPI.lpLineDevCaps.dwTotalSize = Marshal.SizeOf(TAPI.lpLineDevCaps);
TAPI.lpLineDevCaps.bBytes = new StringBuilder().Append(' ', 2000).ToString();
TAPI.lineGetDevCaps(TAPI.hTAPI, lLineID, lNegVer, lUnused, ref TAPI.lpLineDevCaps);
TAPI.lineSetStatusMessages(TAPI.hLine, TAPI.lpLineDevCaps.dwLineStates, 0);
}

محمد میرمصطفی
پنج شنبه 06 مهر 1385, 04:58 صبح
حدس من اینه که هنگام Trace، وقتی فرمان Initialize رو به TAPI می دی، چون داری قدم به قدم میای و بین اجرای هر خطت یه delay هست، Tapi واقعا وقت می کنه که خودشو Init کنه ولی موقعی که برنامه از بیرون اجرا می شه شما قبل از اینکه Tapi برسه Init بشه شما درخواست لیست لاین ها رو می کنی پس Tapi نمی رسه که جواب بده.
من قبلا از این اشکالات داشتم. شما باید یه delay ایجاد کنی.

negar84
پنج شنبه 06 مهر 1385, 09:33 صبح
سلام
ممنون از پاسختون ولی من فکر می کنم شما سوالمو برعکس متوجه شدید . برنامه من وقتی از داخل خود برنامه ازش f5 می گیرم ویا خط به خط اجراش میکنم وارد حلقه for نمیشه ولی وقتی فایل اجراییش رو اجرا می کنم کاملا درست جواب می ده !!!

negar84
شنبه 08 مهر 1385, 08:35 صبح
سلام
می شه یه نفر لطف کنه جواب این سئوال رو بده ....
ممنون می شم

once4ever
شنبه 08 مهر 1385, 12:16 عصر
همون جوابی که گرفتی ولی درست برعکسش
در هنگام اجرای مستقیم برنامه درخواستها و جوابها درزمان مشخص که برنامه قابلیت داره انجام میشه ولی در هنگام اجرای خط به خط یا اجرا از خود دات نت بعد از فرستادن درخواست - تاخییری برای اجرای خط بعد وجود داره - که باعث میشه اثر اون درخواست ازبین بره.
بنظرم از یک log کردن که توسط background (دات نت 2005) اجرا بشه استفاده کن و مقادیر رو مانیتور کن تا بهتر متوجه بشی.

negar84
شنبه 08 مهر 1385, 12:50 عصر
سلام ببخشید میشه بیشتر توضیح بدین:

بنظرم از یک log کردن که توسط background (دات نت 2005) اجرا بشه استفاده کن و مقادیر رو مانیتور کن تا بهتر متوجه بشی.

once4ever
شنبه 08 مهر 1385, 17:09 عصر
بعضی کدها (مثل کد شما) زمان پاسخ محدود هست و منتظر اجرای خط بعدی کد شما نمیشه. برای اینکه بتونی اون مقادیر بدست اومده رو مشاهده کنی احتیاج به یک روندی داری که جدا از اجرای عادی برنامه ات یک کاری رو انجام بده - که تو دات نت 2005 میتونی با BackgroundWorker اینکارو انجام بدی.
موضوعی که من میگم خارج از موضوع اصلی خودت هست. و فقط برای آزمایش کردن کدت هست.

negar84
یک شنبه 09 مهر 1385, 09:56 صبح
سلام
کسی راه حلی برای این مشکل نداره (برای بر طرف کردنش )

negar84
دوشنبه 10 مهر 1385, 12:26 عصر
خواهشا اگه کسی راه حلی داره بگه بد جوری کارم گیر افتاده .....