Method FromStreamCreator
FromStreamCreator(Func<NmeaLocationDataSource, Task<Stream>>, Nullable<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 |
|---|---|---|
| Func<NmeaLocationDataSource, Task<Stream>> | onStart | This method is called when the datasource starts, and should return a |
| System.Nullable<Func<NmeaLocationDataSource, Task>> | onStop | This method is called when the datasource stops, and can be used to clean up resources. |
Returns
| Type | Description |
|---|---|
| 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 |
|---|---|
| UWP | 100.15 |