回答編集履歴
2
別案
test
CHANGED
@@ -7,3 +7,53 @@
|
|
7
7
|
それよりも、質問欄のコードには載っていませんが、
|
8
8
|
|
9
9
|
SQLiteConnectionのインスタンスや、BeginTransaction()の戻り値などがDisposeし忘れていないか、(using構文なりを使っているか)確認してみてください。
|
10
|
+
|
11
|
+
|
12
|
+
|
13
|
+
----
|
14
|
+
|
15
|
+
追記:
|
16
|
+
|
17
|
+
SQLiteConnectionStringBuilderのリークが気になるのでしたら、毎回生成しないようにしてみては?
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
```csharp
|
22
|
+
|
23
|
+
static void Main(string[] args)
|
24
|
+
|
25
|
+
{
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
var dbConnectionString = new SQLiteConnectionStringBuilder
|
30
|
+
|
31
|
+
{
|
32
|
+
|
33
|
+
SyncMode = SynchronizationModes.Off,
|
34
|
+
|
35
|
+
JournalMode = SQLiteJournalModeEnum.Memory,
|
36
|
+
|
37
|
+
DefaultTimeout = 60,
|
38
|
+
|
39
|
+
BusyTimeout = 10,
|
40
|
+
|
41
|
+
ReadOnly = true
|
42
|
+
|
43
|
+
};
|
44
|
+
|
45
|
+
var connectionString = dbConnectionString.ToString(); // ←タイマーの外で文字列化
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
var timer = new Timer(10000);
|
50
|
+
|
51
|
+
timer.Elapsed += (sender, e) =>
|
52
|
+
|
53
|
+
{
|
54
|
+
|
55
|
+
using (SQLiteConnection dbConnection = new SQLiteConnection(connectionString)) // ←タイマーの中では事前に生成した文字列を再利用
|
56
|
+
|
57
|
+
{
|
58
|
+
|
59
|
+
```
|
1
誤植修正
test
CHANGED
@@ -1,11 +1,9 @@
|
|
1
1
|
SQLiteConnectionStringBuilderは接続文字列を生成するだけのクラスなので、
|
2
2
|
|
3
|
-
|
3
|
+
もしリークしたところで大したメモリ消費量ではないのではないでしょうか?
|
4
4
|
|
5
5
|
|
6
6
|
|
7
7
|
それよりも、質問欄のコードには載っていませんが、
|
8
8
|
|
9
|
-
SQLiteConnectionのインスタンスや、BeginTransaction()の戻り値などがDisposeし
|
9
|
+
SQLiteConnectionのインスタンスや、BeginTransaction()の戻り値などがDisposeし忘れていないか、(using構文なりを使っているか)確認してみてください。
|
10
|
-
|
11
|
-
(using構文なりを使っているか)確認してみてください。
|