[Fix] Add "Disposible" interface for final release of resouces

`_search` should release resouces because the file state is still open.
This commit is contained in:
MaleDong 2018-07-30 11:06:57 +08:00
parent 235cd0388c
commit fb564c79e5
5 changed files with 19 additions and 24 deletions

View File

@ -1,9 +1,5 @@
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Order;
using IP2Region.Models; using IP2Region.Models;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
namespace IP2Region.Test.Benchmark namespace IP2Region.Test.Benchmark

View File

@ -1,7 +1,5 @@
using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Attributes;
using System; using System;
using System.Collections.Generic;
using System.Text;
namespace IP2Region.Test.Benchmark namespace IP2Region.Test.Benchmark
{ {
@ -17,7 +15,7 @@ namespace IP2Region.Test.Benchmark
public TestBase(String DBFilePath) public TestBase(String DBFilePath)
{ {
this._dBFilePath = DBFilePath; _dBFilePath = DBFilePath;
} }
[GlobalSetup] [GlobalSetup]
@ -37,7 +35,7 @@ namespace IP2Region.Test.Benchmark
[GlobalCleanup] [GlobalCleanup]
public void Dispose() public void Dispose()
{ {
_search?.Dispose(); _search.Dispose();
} }
public String GetRandomIP() public String GetRandomIP()

View File

@ -4,9 +4,10 @@ using Xunit;
namespace IP2Region.Test.xUnit namespace IP2Region.Test.xUnit
{ {
public class SearchTest public class SearchTest : IDisposable
{ {
private readonly DbSearcher _search; private readonly DbSearcher _search;
public SearchTest() public SearchTest()
{ {
_search = new DbSearcher(Environment.CurrentDirectory + @"\DB\ip2region.db"); _search = new DbSearcher(Environment.CurrentDirectory + @"\DB\ip2region.db");
@ -16,8 +17,8 @@ namespace IP2Region.Test.xUnit
{ {
string memResult = _search.MemorySearch("183.192.62.65").Region; string memResult = _search.MemorySearch("183.192.62.65").Region;
string binarySearchResult = _search.BinarySearch("183.192.62.65").Region; string binarySearchResult = _search.BinarySearch("183.192.62.65").Region;
string binaryTreeSearchResult = _search.BtreeSearch("183.192.62.65").Region; string binaryTreeSearchResult = _search.BtreeSearch("183.192.62.65").Region;
Assert.NotNull(memResult); Assert.NotNull(memResult);
Assert.NotNull(binarySearchResult); Assert.NotNull(binarySearchResult);
Assert.NotNull(binaryTreeSearchResult); Assert.NotNull(binaryTreeSearchResult);
@ -29,10 +30,10 @@ namespace IP2Region.Test.xUnit
[Fact] [Fact]
public async Task SearchAsync_Test() public async Task SearchAsync_Test()
{ {
var memResult = await _search.MemorySearchAsync("183.192.62.65"); var memResult = await _search.MemorySearchAsync("183.192.62.65");
var binarySearchResult = await _search.BinarySearchAsync("183.192.62.65"); var binarySearchResult = await _search.BinarySearchAsync("183.192.62.65");
var bTreeSearchResult = await _search.BtreeSearchAsync("183.192.62.65"); var bTreeSearchResult = await _search.BtreeSearchAsync("183.192.62.65");
Assert.NotNull(memResult.Region); Assert.NotNull(memResult.Region);
Assert.NotNull(binarySearchResult.Region); Assert.NotNull(binarySearchResult.Region);
Assert.NotNull(bTreeSearchResult.Region); Assert.NotNull(bTreeSearchResult.Region);
@ -41,6 +42,9 @@ namespace IP2Region.Test.xUnit
Assert.Equal(bTreeSearchResult.Region, memResult.Region); Assert.Equal(bTreeSearchResult.Region, memResult.Region);
} }
public void Dispose()
{
_search.Dispose();
}
} }
} }

View File

@ -1,9 +1,5 @@
using IP2Region; using IP2Region;
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IP2Region_NetFx_Test namespace IP2Region_NetFx_Test
{ {
@ -11,9 +7,11 @@ namespace IP2Region_NetFx_Test
{ {
static void Main(string[] args) static void Main(string[] args)
{ {
DbSearcher _search = new DbSearcher(Environment.CurrentDirectory + @"\DB\ip2region.db"); using (var _search = new DbSearcher(Environment.CurrentDirectory + @"\DB\ip2region.db"))
Console.WriteLine(_search.MemorySearch("183.192.62.65").Region); {
Console.Read(); Console.WriteLine(_search.MemorySearch("183.192.62.65").Region);
Console.Read();
}
} }
} }
} }

View File

@ -1,5 +1,4 @@
using System.Reflection; using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下 // 有关程序集的一般信息由以下