|
|
|
การใช้ timer ใน vb.net (web app) ผมมีปัญหาครับ....มีวิธีไหนบ้างที่จะ ให้โปรแกรมทำงานเช็คทุก วินาที ว่ามี ข้อมูลเปลี่ยนแปลงหรือไม่ |
|
|
|
|
|
|
|
Timer ใน Web App เดิมทีไม่มีหรอกครับ แต่เค้าจะเรียกมันว่า setTimeOut ครับ โดยเป็น Function การใช้งานพื้นฐานในส่วนของ JavaScript ครับ โดยมีรูปแบบการประกาศดังนี้
Code (JavaScript)
var t = setTimeout("javascript statement", milliseconds);
ใน Method setTimeout มีการรับพารามิเตอร์ 2 ตัว คือ
1. javascript statement หมายถึงชื่อของ Function หรือ statement ใด ๆ ก็ได้
2. milliseconds หมายถึงค่าเวลาที่หน่วงในการเรียก statement
ตัวอย่าง
Code (JavaScript)
<html>
<head>
<script type="text/javascript">
var c=0;
var t;
var timer_is_on=0;
function timedCount()
{
document.getElementById('txt').value=c;
c=c+1;
t=setTimeout("timedCount()",1000);
}
function doTimer()
{
if (!timer_is_on)
{
timer_is_on=1;
timedCount();
}
}
</script>
</head>
<body>
<form>
<input type="button" value="เริ่มนับจำนวน" onclick="doTimer()">
<input type="text" id="txt" />
</form>
</body>
</html>
จากตัวอย่างมีปุ่ม 1 ปุ่ม เมื่อทำการกดจะไปเรียก Function doTimer() และใน doTimer() มีการกำหนดค่าให้ไปเรียก timedCount() และ Function timedCount() มีการเรียก setTimeout โดยกำหนดทุก ๆ 1000 milliseconds หรือ 1 วินาที ก็ให้เรียกตัวเองอีกครั้ง คือเรียก Function timedCount() ไปเรื่อย ๆ และบวกค่าการเรียกมาแสดงผลที่ textbox
แน่นอนว่าคุณสามารถเขียน code ลักษณะตัวอย่างนี้ได้ เพื่อที่จะให้ทุก 1 วินาที มาอ่านข้อมูลทางฝั่ง server นะครับ คุณก็ไป apply ต่อเอาเองว่าภายใต้ Function timedCount นั้น คุณจะเขียน $Post เข้ามายัง server ด้วยวิธีการใดก็ได้ครับแล้วแต่เลย
ส่วนวิธีที่ 2 Microsoft ได้ทำตัวที่เรียกว่า AJAX Toolbox ขึ้นมา ซึ่งคุณต้องไปศึกษาการทำงานของ AJAX เอาเอง โดยการ Reference ToolBox ของ AJAX Control Toolkit จะทำให้มี Control Timer เป็นรูปนาฬิกาเลยนะครับ สามารถนำมาใช้ได้บน Web App เลย ซึ่งผมไม่แนะนำเพราะว่ามีการทำงานจะช้ากว่าแบบแรก แต่ถ้าคุณไม่ถนัด java script ก็ลองศึกษาดูครับ ซึ่งจะต้องใช้ร่วมกับ Script Manager และ Update Panel นะครับ และเมื่อทำการ Deploy จะต้องลงโปรแกรม AJAX Extension 1.0 ด้วยนะครับ
วิธีอื่น ๆ จาก 2 วิธีข้างต้น มีจำพวก 3rd Party Component อันนี้ต้องซื้อ แล้วจะมีความสะดวกสบายต่าง ๆ ในการพัฒนาโปรแกรม ไม่ใช่แค่ Timer อย่างเดียว เทคนิดต่าง ๆ พวก ComboBox Multi Select CheckBox RadioButton Treeview มีหมดครับ จะพัฒนาได้ค่อนข้างเหมือน Win App เลยทันที ซึ่งจริง ๆ แล้วที่ทาง 3rd Party ทำมา ทั้งหมดก็ล้วนทำมาจาก java script นั่นล่ะครับ
ดังนั้นแล้วผมจึงแนะนำว่าให้คุณไปศึกษา java script มาก ๆ ไว้ดีกว่า และศึกษาไปพร้อมกับ css ด้วยเลยก็ดี คุณจะได้เขียนโปรแกรมฝั่ง Front End ได้อย่างมืออาชีพ โชคดีครับ
|
|
|
|
|
Date :
2012-01-07 20:37:29 |
By :
gunnermontana |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอบได้ดีมากครับ ผมก็ใช้หลักการนี้แหละครับ setTimeOut ทำงานซ้ำ ๆ
|
|
|
|
|
Date :
2012-01-07 21:06:05 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณครับคุณวิน พอดีช่วงนี้ไม่ค่อยมีงานทำก็เลยว่างมาก ๆ มานั่งฝึกสมองตอบปัญหาให้น้อง ๆ โปรแกรมเมอร์นะครับ แต่ก็เป็นสมาชิกมานานมาแล้วนะครับ ก็แชร์ความรู้ประสบการณ์กันไปนะครับ จะพยายามตอบปัญหาให้ดีที่สุดสำหรับทุก ๆ ท่านแล้วกันครับ
|
|
|
|
|
Date :
2012-01-07 21:26:48 |
By :
gunnermontana |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สุดยอดครับ ขอบคุนมากครับพี่
|
|
|
|
|
Date :
2012-01-07 21:51:22 |
By :
yo |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 01
|