Method FromStreamCreator
FromStreamCreator(Func<NmeaLocationDataSource, Task<Stream>>, Func<NmeaLocationDataSource, Task>)
Returns a NmeaLocationDataSource that will create the NMEA stream on StartAsync(), and destroy on StopAsync() using the provided start/stop methods.
Declaration
public static NmeaLocationDataSource FromStreamCreator(Func<NmeaLocationDataSource, Task<Stream>> onStart, Func<NmeaLocationDataSource, Task> onStop = null)
Parameters
Type | Name | Description |
---|---|---|
System.Func<NmeaLocationDataSource, System.Threading.Tasks.Task<System.IO.Stream>> | onStart | This method is called when the datasource starts, and should return a System.IO.Stream that points to the NMEA datasource. |
System.Func<NmeaLocationDataSource, System.Threading.Tasks.Task> | onStop | This method is called when the datasource stops, and can be used to clean up resources. |
Returns
Type | Description |
---|---|
NmeaLocationDataSource | An NmeaLocationDataSource. |
Remarks
This helper method is useful for only creating a datasource stream on start and stop, rather than always have the stream running regardless of the datasource state.
var port = new System.IO.Ports.SerialPort("COM1", 9600);
NmeaLocationDataSource serialPortDatasource = NmeaLocationDataSource.FromStreamCreator(
onStart: (ds) =>
{
port.Open();
return Task.FromResult(port.BaseStream);
},
onStop: (ds) =>
{
port.Close();
return Task.CompletedTask;
}
);
MyMapView.LocationDisplay.DataSource = serialPortDatasource;
MyMapView.LocationDisplay.IsEnabled = true; // This will trigger onStart to get called
As an alternative to this approach, you can also subclass NmeaLocationDataSource and override the OnStartAsync(), and OnStopAsync() methods.
Applies to
Platforms and versions
Target | Versions |
---|---|
.NET Windows | 100.13 - 200.6 |
.NET Android | 200.2 - 200.6 |
.NET iOS | 200.0 - 200.6 |
.NET Framework | 100.10 - 200.6 |
Xamarin.Android | 100.10 - 100.14 |
Xamarin.iOS | 100.10 - 100.15 |
UWP | 100.10 - 200.6 |