View Full Version : مشکل با برنامه در سیستم مشتری
alias136790
یک شنبه 30 تیر 1392, 13:23 عصر
من یه برنامه تحت شبکه محلی دارم .
و تو سیستم کاربر، با شروع برنامه من یه Thread رو Start میکنم، اما چند ثانیه بعداش با خطای زیر روبرو میشم.
من از Try,Catch ، هنگام لود برنامه و هنگام Thread.Start استفاده میکنم.اما بازم با خطای زیر روبرو میشم:
107653
نمیدونم دیگه چطور میتونم برنامه رو خطایابی کنم.
parvizwpf
یک شنبه 30 تیر 1392, 15:16 عصر
کدی که نوشتید چیه؟
alias136790
یک شنبه 30 تیر 1392, 23:59 عصر
تو کلاس Program ،یه شی از کلاس KA رو تعریف میکنم:
public static KA k = new KA();
تو فرم لاگین برنامه از این کد استفاده میکنم:
mainform.Show();
Program.k.Start();
اینم کلاس KA:
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Windows.Forms;
using MessageBoxFarsi;
using Bll;
namespace St_User
{
public class KA
{
Student blSt = new Student();
int r;
Thread thread;
AutoResetEvent are;
public static bool StopThread = false;
bool started;
public bool Started
{
get
{
return started;
}
}
internal KA()
{
try
{
started = false;
are = new AutoResetEvent(false);
thread = new System.Threading.Thread(Loop);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "ُُinternal Thread");
MessageBox.Show(ex.ToString(), "internal Thread");
}
}
void Loop()
{
try
{
while (!are.WaitOne(60000))
{
r = blSt.UpdateStDateOn(CurrentData.StudentNo);
if (r == 1)
{
MessageFarsi.Show("ُخروج", 10);
are.Set();
StopThread = true;
Application.Exit();
}
// else if(r !=1)
// MessageBox.Show(r.ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "ُُloop Thread");
MessageBox.Show(ex.ToString(), "loop Thread");
}
}
internal void Start()
{
try
{
if (started)
throw new InvalidOperationException("KeepAlive aleady started.");
started = true;
thread.Start();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "ُُStart Thread");
MessageBox.Show(ex.ToString(),"ُُStart Thread");
}
}
internal void Stop()
{
try
{
if (!started) throw new InvalidOperationException("Cannot stop an already stopped KeepAlive.");
are.Set();
thread.Join();
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "ُُStop Thread");
MessageBox.Show(ex.ToString(), "ُُStop Thread");
}
}
}
}
حالا این برنامه تو سیستم من خیلی راحت، بدون خطا کار میکنه.
اما تو سیستم مشتری خطای بالا رو میده!
hojjatshariffam
دوشنبه 31 تیر 1392, 23:29 عصر
باید کدتو توضیخ بدی و بگی که اینو برا چی نوشتی
اونوق اگه کسی تونسا کمکت می کنه
alias136790
سه شنبه 01 مرداد 1392, 00:00 صبح
در واقع با استفاده از کد پایین، هر یه دقیقه ،آخرین ساعت آنلاین بودن کاربر رو تو دیتابیس ذخیره میکنه و اگه مدیر درخواست خروج کاربر رو داشت،با نشون دادن یه پیغام خروج به کاربر، از برنامه خارج بشه.
while (!are.WaitOne(60000))
{
r = blSt.UpdateStDateOn(CurrentData.StudentNo);
if (r == 1)
{
MessageFarsi.Show("ُخروج", 10);
are.Set();
StopThread = true;
Application.Exit();
}
باقی کدها هم مربوط به Start و Stop کردن Thread هست.
چرا تو سیستم من درست کار میکنه، اما تو سیستم مشتری خطا میگیره؟
alias136790
سه شنبه 01 مرداد 1392, 13:47 عصر
خب توضیحات رو نوشتم ، حالا مشکل از کجاست؟
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.