teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

別案

2018/12/21 05:10

投稿

takabosoft
takabosoft

スコア8356

answer CHANGED
@@ -2,4 +2,29 @@
2
2
  もしリークしたところで大したメモリ消費量ではないのではないでしょうか?
3
3
 
4
4
  それよりも、質問欄のコードには載っていませんが、
5
- SQLiteConnectionのインスタンスや、BeginTransaction()の戻り値などがDisposeし忘れていないか、(using構文なりを使っているか)確認してみてください。
5
+ SQLiteConnectionのインスタンスや、BeginTransaction()の戻り値などがDisposeし忘れていないか、(using構文なりを使っているか)確認してみてください。
6
+
7
+ ----
8
+ 追記:
9
+ SQLiteConnectionStringBuilderのリークが気になるのでしたら、毎回生成しないようにしてみては?
10
+
11
+ ```csharp
12
+ static void Main(string[] args)
13
+ {
14
+
15
+ var dbConnectionString = new SQLiteConnectionStringBuilder
16
+ {
17
+ SyncMode = SynchronizationModes.Off,
18
+ JournalMode = SQLiteJournalModeEnum.Memory,
19
+ DefaultTimeout = 60,
20
+ BusyTimeout = 10,
21
+ ReadOnly = true
22
+ };
23
+ var connectionString = dbConnectionString.ToString(); // ←タイマーの外で文字列化
24
+
25
+ var timer = new Timer(10000);
26
+ timer.Elapsed += (sender, e) =>
27
+ {
28
+ using (SQLiteConnection dbConnection = new SQLiteConnection(connectionString)) // ←タイマーの中では事前に生成した文字列を再利用
29
+ {
30
+ ```

1

誤植修正

2018/12/21 05:10

投稿

takabosoft
takabosoft

スコア8356

answer CHANGED
@@ -1,6 +1,5 @@
1
1
  SQLiteConnectionStringBuilderは接続文字列を生成するだけのクラスなので、
2
- たとてリークしたところで大したメモリ消費量ではないのではないでしょうか?
2
+ もしリークしたところで大したメモリ消費量ではないのではないでしょうか?
3
3
 
4
4
  それよりも、質問欄のコードには載っていませんが、
5
- SQLiteConnectionのインスタンスや、BeginTransaction()の戻り値などがDisposeしわすれていないか、
5
+ SQLiteConnectionのインスタンスや、BeginTransaction()の戻り値などがDisposeしれていないか、(using構文なりを使っているか)確認してみてください。
6
- (using構文なりを使っているか)確認してみてください。