2014-03-06 5 views
0

좋아요. 그래서 레코드를 저장하고 다양한 다른 기능을하는 응용 프로그램이 있습니다. 어떤 종류의 경고 시스템을 만들 수있는 방법을 구현하고 싶습니다. 어떤 기록이든) 접근 할 때 나에게/사용자에게 알려줄 것입니다. 이것이 가능한지 확실하지 않지만 조언이나 제안은 대단히 감사 할 것입니다.마감일이 가까워지면 C# 경고

+0

사례에 대해보다 구체적으로 설명하고, 이미 시도한 것을 게시하고 질문을 게시하기 전에 다시 조사 할 수 있습니다. –

+0

대답이 도움이 되었습니까? –

답변

1

당신은 아마 응용 프로그램의

당신은 정기적 intervall에서 귀하의 기록에 저장된 시간이 비교할 수
DateTime today = DateTime.Today; 

(시작과 같은 컴퓨터의 현재 날짜에 액세스 할 수 있어야합니다 System.DateTime 사용 ?) 마감일이 다가오고 있는지 확인하십시오.

1

별도의 작업으로 불필요한 레코드를 무리없이 반복하여 작업 할 수 있으며 작업을 수행해야하는지 확인할 수 있습니다. 개념을 열 수있는 WPF 예제가 있습니다. 특정 요구에 어떻게 적용하는지 알아낼 수 있다고 생각합니다. 이 예에서

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Threading; 
using System.Threading.Tasks; 
using System.Windows; 

namespace WpfApplication 
{ 
    public partial class MainWindow : Window 
    { 
     private readonly List<MyEvent> _myEvents; 

     public MainWindow() 
     { 
      InitializeComponent(); 
      DataContext = this; 

      // Add some dummy events occuring on specific time 
      _myEvents = new List<MyEvent>() 
       { 
        new MyEvent("My event A", DateTime.Now.AddSeconds(5)), 
        new MyEvent("My event B", DateTime.Now.AddSeconds(10)), 
        new MyEvent("My event C", DateTime.Now.AddSeconds(20)) 
       }; 

      // Fire up the event iterator 
      Task.Factory.StartNew(() => 
       { 
        while (true) 
        { 
         // Report events' status 
         DateTime now = DateTime.Now; 

         foreach (var myEvent in _myEvents.Where(e => e.Time <= now)) 
          System.Diagnostics.Debug.WriteLine(string.Format("Event '{0}' already held", myEvent.Name)); 

         foreach (var myEvent in _myEvents.Where(e => e.Time > now)) 
         { 
          string notification = "Event '{0}' at '{1}' starting in {2} seconds"; 
          TimeSpan timeSpan = myEvent.Time - now; 
          notification = string.Format(notification, myEvent.Name, myEvent.Time, (int)timeSpan.TotalSeconds); 
          System.Diagnostics.Debug.WriteLine(notification); 
         } 
         System.Diagnostics.Debug.WriteLine(new string('-', 15)); 

         // Wait for a while before next iteration 
         Thread.Sleep(3000); 
        } 
       }); 
     } 
    } 

    // Dummy 
    public class MyEvent 
    { 
     public MyEvent() 
     {} 

     public MyEvent(string name, DateTime time) 
     { 
      Name = name; 
      Time = time; 
     } 

     public string Name { get; set; } 

     public DateTime Time { get; set; } 
    } 
} 

출력 될 것 같은 뭔가 :

Event 'My event A' at '6.3.2014 18:34:02' starting in 4 seconds 
Event 'My event B' at '6.3.2014 18:34:07' starting in 9 seconds 
Event 'My event C' at '6.3.2014 18:34:17' starting in 19 seconds 
--------------- 
Event 'My event A' at '6.3.2014 18:34:02' starting in 1 seconds 
Event 'My event B' at '6.3.2014 18:34:07' starting in 6 seconds 
Event 'My event C' at '6.3.2014 18:34:17' starting in 16 seconds 
--------------- 
Event 'My event A' already held 
Event 'My event B' at '6.3.2014 18:34:07' starting in 3 seconds 
Event 'My event C' at '6.3.2014 18:34:17' starting in 13 seconds 
--------------- 
Event 'My event A' already held 
Event 'My event B' at '6.3.2014 18:34:07' starting in 0 seconds 
Event 'My event C' at '6.3.2014 18:34:17' starting in 10 seconds 
--------------- 

코딩 해피!

+0

그리고 예, UI 스레드에 무언가를 위임해야하는 경우, 'label'이라는 레이블을 업데이트한다고하면 예를 들어 그렇게 할 수 있습니다. 'Dispatcher.BeginInvoke (new Action (() => label.Content = "my label")) 호출; –