RALEIGH, N.C. — Voters in North Carolina took to the polls Tuesday in several races, including a special election being watched nationwide as a window into the 2020 elections.

For months, the U.S. House's 9th District seat has remained empty, but with 99% of precincts reporting, the tight race was called for state Rep. Dan Bishop.

Bishop was beating Democrat Dan McCready 50.8% to 48.6% at 10:30 p.m. He was declared the presumed winner pending the certification of the results.

"I’m going to Washington with clear eyes and a steel spine," Bishop said during an acceptance speech in which he thanked family, supporters, the campaign, and the president.

"We must secure our borders, once and for all," he said.

Trump congratulated Bishop in a phone call, which the candidate broadcast on speaker to supporters in the crowd.

In conceding, McCready said, "We may have not won this campaign but that does not mean we were wrong."

"Victory postponed isn't defeat," he said.

The special election between Bishop and McCready was held after the results of their race last fall were tossed out amid an absentee ballot fraud investigation.

Bishop entered Election Day riding high, coming off a rally with President Donald Trump in Fayetteville on Monday night. Trump urged voters to head to the polls to elect another supporter to Capitol Hill.

Bishop had tied himself closely to Trump; campaign ads for Bishop prominently featured the president. In some ways, Bishop had adopted the president's tactics on the campaign trail, attacking the so-called "squad" of progressive freshman female Democrats in Congress.

Bishop compared the special election to a canary in a coal mine.

The 9th District has been held by Republicans since 1963, the Associated Press reported.

Bishop spent his day at polling stations in the Charlotte suburbs, making a final push to voters.

The North Carolina State Board of Elections on Tuesday afternoon took up a request by the state GOP to extend voting hours in Union County, where the party said wrong information had been posted on a website. McCready and Libertarian candidate Jeff Scott opposed extending voting hours. Ultimately, board members didn't make a motion to extend voting hours before adjourning.

A short time later, the Board met to extend voting hours in Precinct 220 in Mecklenburg County by 25 minutes due to a suspected gas leak. The Board approved the extension but said the ballots for the NC09 race must be provisional.

The extension delayed the release of results in the District 9 race by 25 minutes.

Elsewhere, voters in District 3 elected GOP candidate Greg Murphy to the U.S. House. With almost 64% of precincts reporting, the race was called in his favor just after 8 p.m. Murphy defeated Democrat Thomas Allen for the seat that became vacant by the death of Republican Rep. Walter Jones Jr.

The winners of U.S. House races face filing for 2020 elections in less than three months and potential primaries in six months, says Spectrum News Capital Tonight anchor Tim Boyum.

Voters in Charlotte are also choosing primary winners in the city's mayoral race and several city council seats.

Live updates from our crews in the field