کد refresh شدن صفحه هر n ثانیه
با سلام... ببخشید من یک سوالی داشتم ، من یک صفحه دارم (web application) که داخلش یک textbox و یک checkbox دارم و میخوام هر وقت checkbox.checked = true بود این صفحه خودش هر n ثانیه refresh بشه ، که مقدار این n رو هم از text box داخل صفحه میگیرم... چه جوری باید این کار رو انجام بدم?
نقل قول: کد refresh شدن صفحه هر n ثانیه
خوب چرا یه کنترل تایمر رو صفحه ات نمیندازی . و توی اون ایونت کلیک یک Button رو فراخوانی کنی.با فعال شدن ایونت کلیک صفحه صفحه ریفرش میشه.
نقل قول: کد refresh شدن صفحه هر n ثانیه
خوب من این کار رو کردم و فراخوانی timer هم در page_Load گذاشتم ، ولی جواب نمیده و انگار timer اصلا کار نمیکنه!!!!!!!!!!!!!!!! راه دیگه ای نمیشناسید
نقل قول: کد refresh شدن صفحه هر n ثانیه
از کامپوننت Background Worker استفاده کن
نقل قول: کد refresh شدن صفحه هر n ثانیه
نقل قول:
نوشته شده توسط
nbe( amateur C sharp
خوب من این کار رو کردم و فراخوانی timer هم در page_Load گذاشتم ، ولی جواب نمیده و انگار timer اصلا کار نمیکنه!!!!!!!!!!!!!!!! راه دیگه ای نمیشناسید
مطمئنی که enabeld تایمر true هستش چون اول که تایمرو اد می کنی false هستش
نقل قول: کد refresh شدن صفحه هر n ثانیه
نقل قول:
نوشته شده توسط
system32
از کامپوننت Background Worker استفاده کن
Background Worker چیه؟ میشه یه خورده در مورد کاراییش توضیح بدی!
نقل قول: کد refresh شدن صفحه هر n ثانیه
هیچ چیز خاصی نداره فکر کن یه thread مدیریت شده و حاضرو آماده داری استفاده می کنی به عنوان مثال
public void clickOnSaveButton()
{
btn_Save.PerformClick();
System.ComponentModel.BackgroundWorker g_newThread = new BackgroundWorker();
// زمانی که نخ جدید شروع به فعالیت میکنه این تابع فراخوانی می شود
g_newThread.DoWork+=new DoWorkEventHandler(g_newThread_DoWork);
g_newThread.RunWorkerCompleted +=new RunWorkerCompletedEventHandler(g_newThread_RunWork erCompleted);
///فراخوانی با پارامتر new object[]{this, new EventArgs()}
g_newThread.RunWorkerAsync("پارامتر های مورد نیاز تابعی که قرار فراخوانی بشه");
}
private void g_newThread_DoWork(object sender, DoWorkEventArgs e)
{
//در صورتی که با پارامتر صدا زده باشید
object[] parameter = e.Argument as object[];
if (parameter.Length == 0)
{
e.Cancel = true;
return;
}//end if
e.Result = true;
}
private void g_newThread_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
//در صورتی که در تابع فراخوان نخ آن را فعالیت آن را لغو کرده باشید
if (e.Cancelled) MessageBox.Show("");
//در صورتی که در تابع فراخوانی شده خطایی رخ دهد
if (e.Error != null) MessageBox.Show(e.Error.Message);
//نتیجه خروجی از تابع فراخوانی شده
if ((Boolean)e.Result) MessageBox.Show("");
else MessageBox.Show("");
}
فقط یک نکته یادت باشه تو این جور مواقع یعنی در thread ها اگر داری یه Control رو مقدار دهی می کنی حتما باید از توابع invoke اون Control استفاده کنی وگرنه توی ویرایش خطا میگیری
با به عنوان نمونه می تونم بگم فرض کن تابع اجرای thread قرار مقدار یک lable رو عوض کنه پس داریم
private Label lab_Title = new Label();
private delegate void changeLableValue(string _NewValue);
private void ChangeLableVlaue(string _Value)
{
lab_Title.Text = _Value;
}
private void g_newThread_DoWork(object sender, DoWorkEventArgs e)
{
//در صورتی که با پارامتر صدا زده باشید
object[] parameter = e.Argument as object[];
if (parameter.Length == 0)
{
e.Cancel = true;
return;
}//end if
changeLableValue invokeChangeValue = new changeLableValue(ChangeLableVlaue);
lab_Title.Invoke(invokeChangeValue, new object[] { "Hello Body" });
e.Result = true;
}
و به عنوان نکته آخر, فکر کنم تایمر هم یک نوع thread باشه پس به شما اجازه تغییر محتوای یک Control رو نمیده مگر اینکه از invoke ها استفاده کنی (البته چون تا به حال از تایمر استفاده نکردم مطمئن نیستم)
در کل چه از تایمر چه از BackgroundWork استفاده کنی (اگر تایمر رو درست گفته باشم) در این صورت invoke الزامیه
موفق باشی
نقل قول: کد refresh شدن صفحه هر n ثانیه
من کد مربوط به timer رو مینیوسم از component استفاده نمیکنم و کدش هم به این صورت مینویسم :
public System.Timers.Timer myTimer = new System.Timers.Timer();
publicvoid Timer_Send()
{
int TimeRefresh = Convert.ToInt32((txtSecrefresh.Text)) * 1000;
double TimerSend = Convert.ToDouble(TimeRefresh);
myTimer.Interval = TimerSend;
myTimer.Enabled = true;
myTimer.Elapsed += new System.Timers.ElapsedEventHandler(myTimer_Elapsed1);
}
publicvoid myTimer_Elapsed1(object sender, System.Timers.ElapsedEventArgs e)
{
if (CheckBox1.Checked == true)
{
x()
}
}
ولی این اصلا انگار timer کارنمیکنه، چرا؟؟؟؟؟؟؟؟؟؟؟؟؟؟
نقل قول: کد refresh شدن صفحه هر n ثانیه
یه چیز دیگه این رو هم به کدت اضافه کن
Timer g_timer = new Timer();
g_timer.Enabled = true;
//این رو اضافه کن
g_timer.Start();
نقل قول: کد refresh شدن صفحه هر n ثانیه
ممنونم ، این رو هم امتحان میکنم، مرسی.... .
نقل قول: کد refresh شدن صفحه هر n ثانیه
سعی کن کدت رو با جاوا بنویسی و ایجاد یه تایمر در جاوا اسکریپت که هر n ثانیه صفحه رو refresh کنه
از شی setinterval جهت ساخت استفاده کن
همیشه تا جایی که ممکنه از کد جاوا تو برنامت بهره ببر تا نیازی به برقراری با سرور جهت اجرای دستورها نباشه و مدت زمانی را وقت آن صرف کنه