2010-11-25 6 views
2

현재 콘솔 응용 프로그램 (C#)을 사용하고 있습니다. 그것은 데이터베이스에서 파일을 가져 와서 로컬 컴퓨터의 C 드라이브에있는 관련 폴더에 저장합니다.마지막 응용 프로그램 실행 날짜/시간 저장

현재 콘솔 앱을 실행할 때마다 데이터베이스에서 모든 파일을 가져옵니다.

내가 할 수 있기를 원하는 것은 실행 할 때마다, 마지막으로 콘솔 응용 프로그램을 실행 한 이후 제출 된 파일 만 가져옵니다. 현재이 파일을 데이터베이스에서 가져 오는 linq 문입니다. 내가 이것을 달성에 대해 어떻게 이동하는 방법에 대한 확실 해요

var titleObjects = ctn.Titles.Where(t => !t.Deleted && t.SubmissionState == 2 && t.CreatedDate >= LastAppRun && t.CreatedDate <= DateTime.Now && (t.Approved.HasValue && t.Approved.Value)).Select(t => t); 

:

var titleObjects = ctn.Titles.Where(t => !t.Deleted && t.SubmissionState == 2 &&(t.Approved.HasValue && t.Approved.Value)).Select(t => t); 

이상적으로는 응용 프로그램의 마지막 실행 날짜와 시간이 어딘가에 저장되어 다음과 같은 일을하고 싶습니다 . 누구든지 그것에 대해 충고했다면 나는 매우 위대 할 것이다.

+0

응용 프로그램이 시작되면 현재 날짜/시간을 가져 와서 "마지막"날짜/시간과 현재 사이의 메시지를 처리합니다. 앱이 종료되기 전에 현재 시간을 '마지막'으로 저장합니다 (예 : YYYYMMDDHHMMSS로 시간을 지정하고 파일에 저장할 수 있음). 그것의 어느 부분을 확신 할 수 있습니까? – Jon

+0

@ 존, 솔직히 말해서 최선의 방법이 무엇인지 확신 할 수 없습니다. 지금은 (위의 내용은 포함하지 않았습니다) 사용자에게 To 및 From 날짜를 묻는 앱이 설정되어 있지만, 그보다 조금 더 원활하게 작동하고 싶습니다. 나는 단지 앱 내에서 (데이터베이스를 사용하지 않고) "마지막"날짜/시간을 저장하는 방법 또는 가능한 경우에도 확실하지 않았습니다. – 109221793

+2

옵션 생각해 볼 수 있습니다 : 1. 디스크에 원하는 위치에 자신의 파일. 2.'System.Configuration' 3.'System.IO.IsolatedStorage' 4. 레지스트리 5. 데이터베이스 자체. – Ani

답변

2

왜 데이터베이스에 테이블을 만들고 마지막 실행 시간을 포함하는 레코드를 삽입하지 않는가? 그런 다음 각 실행마다 레코드에서 값을 검색하고 완료되면 업데이트합니다.

또는 각 실행에 대해 레코드를 삽입하여 실행이 발생한 시간을 추적하고 마지막 실행이 끝날 때마다 최대 실행 시간으로 레코드를 선택할 수 있습니다.

+0

안녕하세요 @ andynormancx .. 나는이 일을 생각 했어, 난 그냥 다른 일을하는 최선의 방법이 될 볼 수있는 의견을 싶었어요. 답장을 보내 주셔서 감사합니다 :) – 109221793

+0

다른 유일한 옵션은 값을 로컬로 파일이나 레지스트리에 저장하는 것입니다. 데이터베이스가 가장 좋은 장소로 보일 것입니다. – andynormancx

+0

당신이 옳다고 생각합니다. 응용 프로그램이 실행 된 시간에 대한 기록이있는 것이 좋습니다.감사합니다 :) – 109221793

5

이 경우 app.settings를 사용할 수 있습니다. 당신 또는 당신은 또한 설정을 암호화 할 수 있습니다

데이터베이스

없이 응용 프로그램을 사용할 때 그것은 훨씬 쉽게

Properties.Settings.Default.lastRunTime = DateTime.Now; 
Properties.Settings.Default.Save(); 

로 그냥 값을 만들고 해당 값을 설정하는 데 조금 더 쉽다. 암호화를 위해 Google.

0

데이터베이스에 여러 콘솔 클라이언트가있는 경우 어떻게됩니까? LastAppRun의 저장이 클라이언트 측 태스크 인 것처럼 보입니다.

LastAppRun을 파일로 serialize하고 IsolatedStorageFile에 저장할 수 있습니다.

기타 (더 못생긴) 옵션은 레지스트리 키로 이동하는 것입니다.

+0

여러 클라이언트가 쉽게 데이터베이스 솔루션으로 처리됩니다. 각 클라이언트에 대한 식별자가 포함 된 열을 가지고 app.config – andynormancx

+0

세르게이에 각 클라이언트의 식별자를 저장하면 콘솔 클라이언트는 한 사람 만 사용하므로 여러 콘솔 클라이언트에는 문제가 없습니다. – 109221793